不能使用普通的数组函数
本文关键字:数组 函数 不能 | 更新日期: 2023-09-27 18:05:09
为什么我不能使用c#中正常的数组函数,如:
string[] k = {"Hello" , "There"};
k.RemoveAt(index); //Not possible
代码完成提供了All<>、Any<>、Cast<>或Average<>等建议,但没有从数组中删除字符串的函数。这种情况发生在所有类型的数组中。这是因为我的构建目标设置为。net 4.5.1吗?
您不能从数组中"添加"或"删除"项,也不应该这样做,因为数组被定义为固定大小。您提到的功能(All
, Any
)存在是因为Array<T>
实现了IEnumerable<T>
,因此您可以访问LINQ扩展。
虽然它确实实现了IList<T>
,但这些方法将抛出NotSupportedException
。在这种情况下,要"删除"字符串,只需执行:
k[index] = String.Empty; //Or null, whichever you prefer
数组的长度在创建时是固定的,并且不会改变,它代表一块内存。数组实际上实现了IList
/IList<T>
,但只是部分实现——任何试图改变数组的方法都只能在强制转换之后使用,并且会抛出异常。数组在大多数集合中都是内部使用的。
如果你需要任意添加和删除,并且通过索引快速访问,你应该使用List<T>
,它在内部使用大小调整数组。