读书人

string对象比较有关问题求解

发布时间: 2013-08-09 15:16:24 作者: rapoo

string对象比较问题求解
代码:
string a = "hello";
string b = "h";
string c = "hello";
string d = a;
b += "ello";

Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
Console.WriteLine((object)a == (object)c);
Console.WriteLine((object)a == (object)d);
运行:
true
false
true
true

问题: 前两个还好理解,对象生成之后就不再改变。后两个怎么就一样了呢? String 对象
[解决办法]
后面两个位true是因为他们指向的地址都是一致的,也就是说,是同一个实例
[解决办法]
不要胡思乱想,你应该切实地看看 string 类型的 Equals 方法是如何实现的。
[解决办法]
因为CLR的字符串留用(string interning)机制导致后面两个相等。只在内存中保留字符串的一个实例,需要引用字符串的所有变量只需指向单独一个字符串对象。

读书人网 >C#

热点推荐