首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

string对象比较有关问题求解

2013-08-09 
string对象比较问题求解代码:string a hellostring b hstring c hellostring d ab +

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)机制导致后面两个相等。只在内存中保留字符串的一个实例,需要引用字符串的所有变量只需指向单独一个字符串对象。

热点排行