Coc*_*ilo 8 c# string reference operators
我知道这是特例,但是为什么==如果它们的值等于字符串,则返回字符串,而不是当它们的引用等于时.它与重载运算符有关吗?
Joe*_*oey 14
==实际上,运算符被重载String以执行值相等而不是引用相等.我们的想法是让字符串对程序员更友好,并避免在使用引用相等性来比较它们时出现的错误(在Java中并不常见,特别是对于初学者而言).
==
String
到目前为止,我从来没有需要通过引用比较字符串,说实话.如果你需要这样做,你可以使用object.ReferenceEquals().
object.ReferenceEquals()
TTo*_*oni 5
因为字符串是不可变的,并且运行时可以选择将具有相同内容的任何两个字符串放在同一个引用中.所以参考比较字符串并没有任何意义.
nos*_*nos 2
在字符串上,== 按值进行比较
“虽然字符串是引用类型,但相等运算符(== 和 !=)被定义为比较字符串对象的值,而不是引用(7.9.7 字符串相等运算符)。这使得字符串相等性测试更加直观。”
简而言之,字符串上的 == 按值比较字符串,而不是按引用比较字符串,因为 C# 规范规定它应该这样做。
归档时间:
14 年,9 月 前
查看次数:
4800 次
最近记录:
12 年,5 月 前