У меня была мысль прежде, сравнивая две строки с их переменными:
string str1 = "foofoo";
string strFoo = "foo";
string str2 = strFoo + strFoo;
// Even thought str1 and str2 reference 2 different
//objects the following assertion is true.
Debug.Assert(str1 == str2);
Это чисто потому, что среда выполнения .NET признает, что строковое значение одно и то же, и поскольку строки неизменяемы, ссылка на str2
равна значению str1
?
Итак, когда мы делаем str1 == str2
, мы фактически сравниваем ссылки и не значения? Я изначально думал, что это был продукт синтаксического сахара, но был ли я неправильным?
Любые неточности с тем, что я написал?