- использует механизм, аналогичный string.Intern, чтобы одни и те же экземпляры значений использовали одну и ту же управляемую ссылку.
- сравнение равенства сначала выполняется на основе ReferenceEquals, но затем падает вернемся к семантике значений, т.е. равенству полей.
Код: Выделить всё
public override bool Equals([NotNullWhen(true)] object? obj) {
if (ReferenceEquals(this, obj))
return true;
if (obj is not string str)
return false;
if (this.Length != str.Length)
return false;
return EqualsHelper(this, str);
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... to-strings