你应该false
为电话ReferenceEquals
对string
不属于字符串文字对象.
本质上,最后一行True
是巧合打印的:当你传递一个空字符串进行字符串连接时,库优化会识别出这一点,然后返回原始字符串.这与实习没有任何关系,因为从控制台读取的字符串或以任何其他方式构造的字符串也会发生同样的事情:
var s1 = Console.ReadLine(); var s2 = s1+""; var s3 = ""+s1; Console.WriteLine( "{0} {1} {2}" , object.ReferenceEquals(s1, s2) , object.ReferenceEquals(s1, s3) , object.ReferenceEquals(s2, s3) );
以上打印
True True True
演示.
你应该false
为电话ReferenceEquals
对string
不属于字符串文字对象.
本质上,最后一行True
是巧合打印的:当你传递一个空字符串进行字符串连接时,库优化会识别出这一点,然后返回原始字符串.这与实习没有任何关系,因为从控制台读取的字符串或以任何其他方式构造的字符串也会发生同样的事情:
var s1 = Console.ReadLine(); var s2 = s1+""; var s3 = ""+s1; Console.WriteLine( "{0} {1} {2}" , object.ReferenceEquals(s1, s2) , object.ReferenceEquals(s1, s3) , object.ReferenceEquals(s2, s3) );
以上打印
True True True
演示.