c# - C# 移除常规数组的元素

90 5

我有一个Foo对象数组。 如何删除数组的第二个元素?

我需要类似于 RemoveAt()的东西,但只对于常规数组。

时间: 原作者:

94 2

如果你不希望使用 List:


var foos = new List<Foo>(array);


foos.RemoveAt(index);


return foos.ToArray();



您可以尝试这种我还没有实际测试的扩展方法:


public static T[] RemoveAt<T>(this T[] source, int index)


{


 T[] dest = new T[source.Length - 1];


 if( index> 0 )


 Array.Copy(source, 0, dest, 0, index);



 if( index <source.Length - 1 )


 Array.Copy(source, index + 1, dest, index, source.Length - index - 1);



 return dest;


}



然后使用它:


Foo[] bar = GetFoos();


bar = bar.RemoveAt(2);



原作者:
104 2

数组的性质是它们的长度是不可变的。 你不能添加或 delete 任何数组项。

您必须创建一个较短的元素的新数组,并将旧项目复制到新数组,不包括要删除的元素。

因此,最好使用 List 而不是数组。

原作者:
71 1

我使用这里方法从对象数组中移除元素。 在我看来,我的数组长度很小。 所以如果你有大的数组你可能需要另一个解决方案。


private int[] RemoveIndices(int[] IndicesArray, int RemoveAt)


{


 int[] newIndicesArray = new int[IndicesArray.Length - 1];



 int i = 0;


 int j = 0;


 while (i <IndicesArray.Length)


 {


 if (i!= RemoveAt)


 {


 newIndicesArray[j] = IndicesArray[i];


 j++;


 }



 i++;


 }



 return newIndicesArray;


}



原作者:
...