Как я могу создать тип с семантикой равенства, похожий на строкиC#

Место общения программистов C#
Anonymous
Как я могу создать тип с семантикой равенства, похожий на строки

Сообщение Anonymous »

Исходя из этого закрытого вопроса (который в настоящее время вряд ли будет открыт повторно), задача будет заключаться в создании неизменяемого типа, который
  • использует механизм, аналогичный string.Intern, чтобы одни и те же экземпляры значений использовали одну и ту же управляемую ссылку.
  • сравнение равенства сначала выполняется на основе ReferenceEquals, но затем падает вернемся к семантике значений, т.е. равенству полей.
По сути, это что-то вроде string.Equals:

Код: Выделить всё

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

Вернуться в «C#»