我有这段代码:
IList<string> stelle = stelleString.Split('-');
if (stelle.Contains("3"))
stelle.Add("8");
if (stelle.Contains("4"))
stelle.Add("6");
但似乎IList在.Split()之后有一个固定的大小: System.NotSupportedException:Collection是固定大小的。
如何解决此问题?
答案 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)