赋值给string创建新实例吗? C#

时间:2017-01-21 14:51:00

标签: c#

我知道字符串是System.String的别名,但我无法理解这种特定的行为。

string s = "ABC";
string s1 = "AB"+"C";
String s2 = new String("ABC");

s == s1会返回true,但s == s2会返回false

我知道string是一种引用类型,因此ss1的实例引用了两个不同的实例,但为什么s==s1为真?

1 个答案:

答案 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的别名;这两者可以互换使用,而不会改变程序的含义。