Я знаю, что строка является псевдонимом System.String
, но я не могу понять это конкретное поведение.Назначает ли значение string для создания нового экземпляра? C#
string s = "ABC";
string s1 = "AB"+"C";
String s2 = new String("ABC");
s == s1
возвращает true
но s == s2
возвращает false
.
Я знаю string
является ссылочным типом, поэтому экземпляр s
и s1
ссылается два разных экземпляров, но почему s==s1
правда?
Возможный дубликат [Операторы string.Equals() и == действительно такие же?] (Http://stackoverflow.com/questions/3678792/are-string-equals-and-operator-really-same) –
http : //stackoverflow.com/questions/7074/what-is-the-difference-between-string-and-string-in-c – Khoshtarkib
«AB» + «C» компилятор превращается в «ABC». И поскольку строки интернированы, s и s1 являются ссылками на одну и ту же строку. Тип строки является специальным и обрабатывается иначе, чем другие типы ссылок. –