У меня есть пример кода.В чем разница между присваиванием и созданием экземпляра строки в C#?
var charMass = new char[] { 's', 't', 'r' };
string myString = new string(charMass);
string myString2 = new string(charMass);
string myString3 = "str";
string myString4 = "str";
bool bb1 = Object.ReferenceEquals(myString, myString2);
bool bb2 = Object.ReferenceEquals(myString, myString3);
bool bb3 = Object.ReferenceEquals(myString3, myString4);
Почему bb1 и bb2 являются фальшивыми? Я знаю, что equals должен показывать true, потому что он сравнивает значения, но как насчет распределения памяти для этих строк? Почему myString3 и myString4 указывают на тот же блок памяти в куче, но myString и myString2 нет?
http://stackoverflow.com/questions/4232789/why-does-referenceequalss1-s2-returns-true Вероятно, выше ссылка поможет вам. –
Эта статья [http://en.wikipedia.org/wiki/String_interning] может объяснить вашу проблему. –