【发布时间】:2009-03-31 19:20:26
【问题描述】:
是因为 CLR 的字符串池化还是两个字符串的 GetHashCode() 方法返回相同的值?
string s1 = "xyz";
string s2 = "xyz";
Console.WriteLine(" s1 reference equals s2 : {0}", object.ReferenceEquals(s1, s2));
控制台写道:“s1 引用等于 s2 : True”
我相信,这不是因为 GetHashCode() 为两个字符串实例返回相同的值。因为,我使用自定义对象进行了测试,并重写了 GetHasCode() 方法以每次都返回一个常量。此对象的两个单独实例在引用中不相等。
请告诉我,幕后发生了什么。
谢谢 123开发人员
【问题讨论】: