删除常规数组的元素

删除常规数组的元素

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

我需要类似的东西RemoveAt()但对于一个普通的数组。


喵喔喔
浏览 379回答 3
3回答

holdtom

如果您不想使用List:var&nbsp;foos&nbsp;=&nbsp;new&nbsp;List<Foo>(array);foos.RemoveAt(index);return&nbsp;foos.ToArray();您可以尝试这个我还没有实际测试过的扩展方法:public&nbsp;static&nbsp;T[]&nbsp;RemoveAt<T>(this&nbsp;T[]&nbsp;source,&nbsp;int&nbsp;index){ &nbsp;&nbsp;&nbsp;&nbsp;T[]&nbsp;dest&nbsp;=&nbsp;new&nbsp;T[source.Length&nbsp;-&nbsp;1]; &nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;index&nbsp;>&nbsp;0&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array.Copy(source,&nbsp;0,&nbsp;dest,&nbsp;0,&nbsp;index); &nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;index&nbsp;<&nbsp;source.Length&nbsp;-&nbsp;1&nbsp;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array.Copy(source,&nbsp;index&nbsp;+&nbsp;1,&nbsp;dest,&nbsp;index,&nbsp;source.Length&nbsp;-&nbsp;index&nbsp;-&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dest;}并把它当作:Foo[]&nbsp;bar&nbsp;=&nbsp;GetFoos();bar&nbsp;=&nbsp;bar.RemoveAt(2);

米琪卡哇伊

数组的本质是它们的长度是不可变的。不能添加或删除任何数组项。您必须创建一个更短的元素的新数组,并将旧项复制到新数组,不包括要删除的元素。因此,最好使用列表而不是数组。

12345678_0001

我使用此方法从对象数组中移除元素。在我的情况下,我的数组长度很小。因此,如果您有大型数组,您可能需要另一种解决方案。private&nbsp;int[]&nbsp;RemoveIndices(int[]&nbsp;IndicesArray,&nbsp;int&nbsp;RemoveAt){ &nbsp;&nbsp;&nbsp;&nbsp;int[]&nbsp;newIndicesArray&nbsp;=&nbsp;new&nbsp;int[IndicesArray.Length&nbsp;-&nbsp;1]; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;j&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(i&nbsp;<&nbsp;IndicesArray.Length) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i&nbsp;!=&nbsp;RemoveAt) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newIndicesArray[j]&nbsp;=&nbsp;IndicesArray[i]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j++; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;newIndicesArray;}
打开App,查看更多内容
随时随地看视频慕课网APP