C# 8.0 представил readonly
членов в структуре (как объяснено здесь ). Например, у вас может быть такой метод:
public readonly override string ToString() => $"({X}, {Y}) is {Distance} from the origin";
Кроме того, если ваш метод readonly
изменяет состояние структуры, он не будет компилироваться - что я считаю довольно полезным и элегантным решением. Так, например, в приведенном ниже примере, если X
и Y
являются свойствами структуры, следующий метод не будет компилироваться:
public readonly void Translate(int xOffset, int yOffset)
{
X += xOffset;
Y += yOffset;
}
Опять же, очень полезный и элегантный способ express Намерение кода.
Почему тогда это возможно только для структур, а не для классов. Если я пытаюсь добавить readonly
к методу в классе, я получаю ошибку компилятора: The modifier 'readonly' is not valid for this item.
Существуют ли какие-либо ограничения ссылочного типа, когда использование метода только для чтения не имеет смысла?