想知道为什么String在使用==时表现得像值类型.
String s1 = "Hello";
String s2 = "Hello";
Console.WriteLine(s1 == s2);// True(why? s1 and s2 are different)
Console.WriteLine(s1.Equals(s2));//True
StringBuilder a1 = new StringBuilder("Hi");
StringBuilder a2 = new StringBuilder("Hi");
Console.WriteLine(a1 == a2);//false
Console.WriteLine(a1.Equals(a2));//true
Run Code Online (Sandbox Code Playgroud)
StringBuilder和String的行为与==运算符不同.谢谢.
Mar*_*ell 18
两个不同的原因;
"Hello"字符串被编译到源中,它们是相同的引用 - 检查ReferenceEquals(s1,s2)- 它将返回true==/ !=(又名op_Equality/ op_Inequality)该StringBuilder版本失败,因为:
StringBuilder 没有运营商呼叫ToString()每个,它变得更有趣:
true| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |