Интернирование. Одинаковые строковые литералы занимают место в памяти только один раз
Интернирование же
тогда почему во втором сравнении у меня false ?
Разве для столь малых строк это работает?
Потому что s1 - не литерал и создаётся методом Format
А почему не должно?
Ты литерал создаешь
Мне казалось там начиная с какой то длины это включается
Ты явно можешь через string.Intern закинуть туда
Нет. А зачем выключать? Кеш процессора не резиновый =)
Оно же вроде не для всего
Явно это другое дело
А где я написал, что для всего? Я написал про строковые литералы
Другое, согласен
Почему для всего? Только строки
Ну ладно, видимо я не прав Может путаю с js
В JS там жопка, ибо есть string, а есть String, и нет - это не то же самое, и ведут они себя по разному =)
Просто там тоже есть оптимизации и вроде они то ли от 4, то ли от 6 символов начинаются в строке
Ну это уже выкрутасы движка, которые, так то, видны в коде не должны быть. А в дотнете видны. Ну, ок. У нас мутабельных строк никогда (в стандартной либе) не было, так что какая разница?
Надо короче так на это дело смотреть
Если GetHashCode() возвраще тот же хеш то почему в одном месте true в другом нет
https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AXEUCuA7AHwAEAmABgFgAoUgRmuoDcBDKAAilrYF42jayAOgDCEPGGYYAFACJmwMDLRsZAExgAzGQEoA3E1YcSPFfMVsA1CvVb9VFuygBmE3IU2Zd6vwCcU/xDAAFYwYBjanNqCAKIAjjjMADYAzgHBoeFQJNp63rR+aSFhEbTaPLxSgUWZ2bpAA==
что здесь происходит ?
твой ласт и перед ним связан с интернированием отсюда и true
Неа, там компайл там выведение результата
Обсуждают сегодня