不能使用普通的数组函数

本文关键字:数组 函数 不能 | 更新日期: 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>,它在内部使用大小调整数组。