修改
为什么这个问题不重复?
我没有问.Equals()
和==
之间的区别。我问的是==
实际上是如何工作的。我的意思是,当我使用不同的方法创建字符串时,我应该看到不同的结果。但我看到同样的结果。
我正在调查c#中的==
运算符。令我惊讶的是,它给出了以下代码的相同结果(与JAVA相反)。但根据this,==
用于参考检查,我应该看到我的代码有不同的结果,那么为什么我看到它们的结果相同?难道我不能看到我的代码有不同的结果吗?是因为c#中的new String()
没有生成新的引用吗?
String s = "abc";
String s1 = "abc";
Console.WriteLine("Expected output: True, Actual output: " + (s1==s).ToString());
输出
预期输出: True ,实际输出: True
另一个代码检查
String s2 = new String("abc".ToCharArray());
String s3 = new String("abc".ToCharArray());
Console.WriteLine("Expected output: False, Actual output: " + (s2 == s3).ToString());
输出
预期输出:错误,实际输出: True
注意:我理解差异参考&价值检查。我使用ReferenceEquals
尝试了结果,并向我显示了预期结果。
答案 0 :(得分:7)
通常,对于引用类型==
,运算符会检查引用相等性。
String也是一个引用类型,但在String类==
中,运算符被重载以检查内容是否相等而不是引用相等。
它说,我引用
Determines whether two specified strings have the same value.
请阅读https://msdn.microsoft.com/en-us/library/system.string.op_equality(v=vs.110).aspx
仅供参考,在字符串!=
中,运算符也被开发以检查字符串内容不等式。
答案 1 :(得分:1)
在c#operator ==
中,字符串比较值,而不是引用。