Подтвердить что ты не робот

Проблема с Илистом. Исправленный размер?

У меня есть этот код:

IList<string> stelle = stelleString.Split('-');

if (stelle.Contains("3"))
    stelle.Add("8");

if (stelle.Contains("4"))
    stelle.Add("6");

но кажется, что IList имеет фиксированный размер после .Split(): System.NotSupportedException: коллекция имеет фиксированный размер.

Как я могу исправить эту проблему?

4b9b3361

Ответ 1

Метод Split возвращает массив, и вы не можете изменять размер массива.

Вы можете создать List<string> из массива с помощью метода расширения ToList:

IList<string> stelle = stelleString.Split('-').ToList();

или конструктор List<T>:

IList<string> stelle = new List<string>(stelleString.Split('-'));

Кроме того, вы, вероятно, не хотите использовать интерфейс IList<T> в качестве типа переменной, но просто используете фактический тип объекта:

string[] stelle = stelleString.Split('-');

или

List<string> stelle = stelleString.Split('-').ToList();

Это позволит вам точно использовать то, что может сделать класс, не ограничиваясь интерфейсом IList<T>, и никакими методами, которые не поддерживаются.

Ответ 2

string.Split возвращает массив строк. Это действительно имеет фиксированный размер.

Вы можете преобразовать его в List<string>, передав результат конструктору List<T>:

IList<string> stelle = new List<string>(stelleString.Split('-'));

Или, если доступно, вы можете использовать оператор LINQ ToList():

IList<string> stelle = stelleString.Split('-').ToList();

Ответ 3

У него есть причина фиксированного размера string.Split возвращает строку []. Вам нужно передать возвращаемое значение split в List <string> экземпляр для добавления дополнительных элементов.

Ответ 4

Вызвать ToList() к результату:

IList<string> stelle = stelleString.Split('-').ToList();

Ответ 5

String.split возвращает массив. Но вы можете переделать массив. В VB это

ReDim perserve myarray(newlength minus one)