Задать вопрос
adressmoeistranici
@adressmoeistranici
Делатель

Не удалось изменить возвращаемое значение «List.this[int]»?

//обявление в классе Data
static public List<SheduleCell> sheduleCells;
//структура
    public struct SheduleCell
    {
        public string cell1;
        public int cell2;
        public SheduleCell(string param1, int param2)
        {
            cell1 = param1;
            cell2 = param2;
        }
    }
//место ошибки
Data.sheduleCells[idx].cell2 = hours;

подчеркивает Data.sheduleCells[idx]
пишет Не удалось изменить возвращаемое значение "List.this[int]" тк оно не является переменной
  • Вопрос задан
  • 1118 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
@kttotto
пофиг на чем писать
Вы сделали коллекцию структур. Нужно знать разницу между структурой и экземпляром класса. Структура - значимый тип, поэтому когда Вы запрашиваетеsheduleCells[idx], Вы получите копию значения, а не ссылку на объект. А у копии отдельные поля Вы менять не можете, можете только полностью новым значением всей структуры заменить.

Поэтому есть два выхода, либо изменить struct на class, либо менять значение
var temp = Data.sheduleCells[idx];
Data.sheduleCells[idx] = new SheduleCell(temp.cell1, hours);
Ответ написан
Комментировать
adressmoeistranici
@adressmoeistranici Автор вопроса
Делатель
SheduleCell sc = Data.sheduleCells[idx];
sc.cell2 = hours;
Data.sheduleCells[idx] = sc;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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