【发布时间】:2012-05-28 04:39:31
【问题描述】:
代码很容易解释。当我创建a1 和b1 时,我预计我正在创建两个包含相同文本的不同字符串实例。所以我认为a1 == b1 是真的,但object.ReferenceEquals(a1,b1) 是假的,但事实并非如此。为什么?
//make two seemingly different string instances
string a1 = "test";
string b1 = "test";
Console.WriteLine(object.ReferenceEquals(a1, b1)); // prints True. why?
//explicitly "recreating" b2
string a2 = "test";
string b2 = "tes";
b2 += "t";
Console.WriteLine(object.ReferenceEquals(a2, b2)); // prints False
//explicitly using new string constructor
string a3 = new string("test".ToCharArray());
string b3 = new string("test".ToCharArray());
Console.WriteLine(object.ReferenceEquals(a3, b3)); // prints False
【问题讨论】:
-
我确定这是重复的...
-
@pst 你是对的!并且实习不是任何答案的一部分
标签: c# string reference equality