Вопрос по c# – Почему свойства анонимных типов в C # доступны только для чтения?

50

В C # свойства анонимных типов доступны только для чтения:

var person = new { Surname = "Smith", OtherNames = "John" };
person.Surname = "Johnson";  // ERROR: .Surname is read-only

Конечно, я могу объявить реальный класс, если мне нужны доступные для записи поля или свойства, но независимо от того, что является причиной этого дизайнерского решения сделать свойства доступными только для чтения?

Может быть, безопасность? Если вы не указали, что они доступны для записи, не хотите ли их написать? Кроме того, это свойства, а не поля. John Saunders
stackoverflow.com/questions/622664/… Mehrdad Afshari
Хороший вопрос, я изменю текст. Я также задавался вопросом, почему они не могут быть полями, объявленными с "readonly" ... Roman Starkov

Ваш Ответ

1   ответ
51

Интересная статья на эту темуВот, Оттуда ...

... [B]y ensuring that the members do not change, we ensure that the hash is constant for the lifetime of the object.This allows anonymous types to be used with collections like hashtables, without actually losing them when the members are modified. There are a lot of benefits of immutabilty in that, it drastically simplifies the code that uses the object since they can only be assigned values when created and then just used (think threading)

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Roman Starkov

Похожие вопросы