Почему C# 8.0 допускает использование членов только для чтения в структуре, но не в классе?C#

Место общения программистов C#
Ответить
Anonymous
 Почему C# 8.0 допускает использование членов только для чтения в структуре, но не в классе?

Сообщение Anonymous »

В C# 8.0 появились члены структуры, доступные только для чтения (как описано здесь). Например, вы можете использовать этот метод:

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

public readonly override string ToString() => $"({X}, {Y}) is {Distance} from the origin";
Кроме того, если ваш метод только для чтения изменяет состояние структуры, она не будет скомпилирована, что я считаю весьма полезным и элегантным решением. Так, например, в приведенном ниже примере, если X и Y являются свойствами структуры, следующий метод не будет компилироваться:

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

public readonly void Translate(int xOffset, int yOffset)
{
X += xOffset;
Y += yOffset;
}
Опять же, очень полезный и элегантный способ выразить смысл кода.
Почему тогда это возможно только со структурами, а не с классами ? Если я попытаюсь добавить доступ только для чтения к методу в классе, я получу ошибку компилятора:

Модификатор «только для чтения» для этого недопустим. item.

Есть ли какие-либо ограничения ссылочного типа, при которых использование метода только для чтения не имеет смысла?

Подробнее здесь: https://stackoverflow.com/questions/615 ... in-a-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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