我知道字符串是System.String
的别名,但我无法理解这种特定的行为。
string s = "ABC";
string s1 = "AB"+"C";
String s2 = new String("ABC");
s == s1
会返回true
,但s == s2
会返回false
。
我知道string
是一种引用类型,因此s
和s1
的实例引用了两个不同的实例,但为什么s==s1
为真?
答案 0 :(得分:3)
why is s==s1 true ?
此问题之前已得到解答 - operator==()
已被覆盖字符串,以避免发生常见错误。
更有意思的是为什么在String s2 = new String("ABC");
之后,据说“s == s2返回false”。
嗯,所呈现的行不能编译。编译的内容为String s2 = new String( new char[] { 'A', 'B', 'C'});
,之后s==s2
为真。
请注意,string
只是一个C#关键字,是System.String
的别名;这两者可以互换使用,而不会改变程序的含义。