Нельзя изменять данные в структуре на прямую?

f602b751149d41e694ff9f61392557d7.PNG

Company является структурой. Owner и CompanyName - свойства.

Ошибка: Не удалось изменить возвращаемое значение для "*.Company", т.к. оно не является переменной
Вопрос: менять данные в структуре, на прямую, запрещено?
  • Вопрос задан
  • 2624 просмотра
Решения вопроса 1
Mrrl
@Mrrl
Заводчик кардиганов
Предполагаю, что поле Company в объекте Im.Work описано тоже как свойство:
public Company Company{ get; set; }

В этом случае, когда вы пишете Im.Work.Company.CompanyName="Name", вызывается метод get для Company, возвращает копию структуры (потому что вернуть ссылку не может), и дальше вы пытаетесь в этой копии, никуда её не положив, поменять одно из полей. Оригинал от этого точно не изменится, и, по-видимому, компилятор не даёт выполнить заведомо бессмысленное действие (изменить объект, который сейчас будет уничтожен).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
onyxmaster
@onyxmaster
Программист, ненастоящий сисадмин
Модификатора readonly нет?
Ответ написан
@Maddox Автор вопроса
public struct Company
    {
        public string CompanyName { get; set; }
        public Build Build { get; set; }
        public Human Owner { get; set; }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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