Задать вопрос

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

f602b751149d41e694ff9f61392557d7.PNG

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

Ошибка: Не удалось изменить возвращаемое значение для "*.Company", т.к. оно не является переменной
Вопрос: менять данные в структуре, на прямую, запрещено?
  • Вопрос задан
  • 2628 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 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; }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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