Не понимаю как исправить ошибку CS0200
Не понимаю как исправить ошибку. У меня есть данный кусок кода:
int N = int.Parse(Console.ReadLine());
List<Tuple<int, int>> v = new List<Tuple<int, int>>();
List<Tuple<int, int>> rl = new List<Tuple<int, int>>();
for (int i = 1; i < N; i++)
rl[rl.Count - 1].Item2 = v[i].Item2; //< CS0200
Как можно исправить тут ошибку? Я понимаю, что у меня разрешено только для чтения, но не знаю как разрешить запись. В коде нужно добавить второй элемент из списка v в конец списка rl.
PS: пробовал еще так
rl.Last(new Tuple<int, int>(rl.Count - 1, 0)) = v[i].Item2;
но тут появляется новая ошибка CS1503
Ответы (1 шт):
Автор решения: Yotic
→ Ссылка
Вообще тут двухслойная ошибка в одной строке.
- Изменение картежа из массива по индексу. - Вы используете Tuple, но свойства Tuple всегда доступны только для чтения, чтобы изменить одно из свойств Tuple, нужно полностью заменить Tuple на только что созданный Tuple с нужными вами изменениями.\ - Используйте ValueTuple.
- Изменение TupleValue в массиве. - Нельзя изменять свойства структур в массиве.
Так из вашего кода нужно сделать:
int N = int.Parse(Console.ReadLine());
List<(int, int)> v = new List<(int, int)>();
List<(int, int)> rl = new List<(int, int)>();
for (int i = 1; i < N; i++)
rl[rl.Count - 1] = (rl[rl.Count - 1].Item1, v[i].Item2);