提问人:PakiPat 提问时间:9/29/2017 最后编辑:maccetturaPakiPat 更新时间:9/29/2017 访问量:141
如果字符串是引用类型,为什么在这种情况下 strA 的值没有变化?[复制]
If string is a reference type, why is strA's value not changing in this case? [duplicate]
问:
这个问题在这里已经有答案了:
在 C# 中,为什么 String 是一个行为类似于值类型的引用类型? (12 个答案)
为什么字符串在 Java 和 .NET 中不能是可变的? (17 个回答)
C# 字符串引用类型? (11 个回答)
字符串是值类型还是引用类型? (8 个回答)
6年前关闭。
我以为我理解了 Reference 和 Value 类型之间的区别。我以为 “string”只有值类型语义,同时保留了引用类型的行为。然后我尝试了这个,希望看到 True 在这两种情况下都返回。 我误解了什么?
string strA = "AAA";
string strB = strA;
strB = "BBB";
Console.WriteLine($"strA is {strA} and strB is {strB}");
Console.WriteLine($"The statement: strA == strA is {strA == strB} \n");
Car car1 = new Car();
car1.Horsepower = 190;
Car car2 = car1;
car2.Horsepower = 200;
Console.WriteLine($"car1.Horsepower is {car1.Horsepower} and car2.Horsepower is {car2.Horsepower}");
Console.WriteLine($"The statement: car1 == car2 is {car1 == car2}");
输出:
strA 是 AAA,strB 是 BBB
语句: strA == strA is False
汽车1。马力是 200 和 car2。马力是 200
语句:car1 == car2 为 True
答:
2赞
zneak
9/29/2017
#1
字符串文本指定字符串实例。为了方便起见,将字符串转换为汽车,这基本上就是您对字符串所做的:
Car AAA = new Car();
Car BBB = new Car();
Car carA = AAA;
Car carB = carA;
carB = BBB;
Console.WriteLine($"carA is {carA} and carB is {carB}");
Console.WriteLine($"The statement: carA == carB is {carA == carB}
最大的区别在于,您使用而不是 /,因为编译器为静态字符串预先分配对象。"string literals"
new Car
new String
评论