IList麻烦。固定尺寸?

时间:2011-11-08 14:48:39

标签: c# collections ilist

我有这段代码:

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

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

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

但似乎IList在.Split()之后有一个固定的大小: System.NotSupportedException:Collection是固定大小的。

如何解决此问题?

5 个答案:

答案 0 :(得分:21)

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>接口,也不支持不支持的方法。

答案 1 :(得分:13)

string.Split返回一个字符串 array 。这确实有一个固定的大小。

您可以将结果传递给List<string>构造函数,将其转换为List<T>

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

或者,如果可用,您可以使用LINQ ToList()运算符:

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

答案 2 :(得分:3)

它有一个固定大小的原因string.Split返回一个字符串[]。您需要将split的返回值传递给List&lt; string&gt;实例,以支持添加其他元素。

答案 3 :(得分:2)

调用ToList()结果:

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

答案 4 :(得分:0)

String.split返回一个数组。但是你可以重新定义数组。在VB中它是

ReDim perserve myarray(newlength minus one)