new String()不会';t在c#中创建新的引用对象
本文关键字:创建 对象 引用 String 不会 new | 更新日期: 2023-09-27 17:50:21
编辑:
为什么这个问题不重复我不是在问.Equals()
和==
之间的区别。我在问==
实际上是如何工作的。我的意思是,当我使用不同的方法创建字符串时,我应该看到不同的结果。但我看到了同样的结果。
我正在研究c#中的==
运算符。令我惊讶的是,它对以下代码给出了相同的结果(与JAVA相反(。但根据这一点,==
是用于参考检查的,我应该看到我的代码的不同结果,那么为什么我看到他们两个的相同结果呢?难道我不应该为我的代码块看到不同的结果吗?是因为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());
输出
预期输出:错误,实际输出:真
注意:我理解差异参考&值检查。我已经尝试了ReferenceEquals
的结果,它向我展示了预期的结果。
通常,对于引用类型,==
运算符会检查引用是否相等。
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
仅供参考,在字符串!=
中,还加载了运算符来检查字符串内容的不相等性。
在c#运算符==
中,字符串比较值,而不是引用。