如何从数组中删除一个元素并将其余元素移回?(C#)

这是一个数组的例子


int[] N = new int[]{1,0,6,0,3,4};

for (int i = 0; i < N.Length; i++){

    if (N[i] == 0){

    //remove N[i] and moveback everything }

        foreach (string i in N) {

            Console.Write("{0} ", i + " ");

}

示例输出将是


1 6 3 4 


繁花如伊
浏览 153回答 3
3回答

拉莫斯之舞

过滤以创建新数组N&nbsp;=&nbsp;N.Where(x&nbsp;=>&nbsp;x&nbsp;!=&nbsp;0).ToArray();

森林海

它似乎很适合通用扩展方法,并且Array.Copy有一个很好的快速解决方案注意:这会重新创建一个数组。给定public static class Extensions{&nbsp; &nbsp;public static T[] RemoveElement<T>(this T[] source, int index)&nbsp; &nbsp; &nbsp; where T : new()&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; if(index >= source.Length) throw new ArgumentOutOfRangeException(nameof(index));&nbsp; &nbsp; &nbsp; // create new array&nbsp; &nbsp; &nbsp; var result = new T[source.Length - 1];&nbsp; &nbsp; &nbsp; // Copy the first part&nbsp; &nbsp; &nbsp; Array.Copy(source, 0, result, 0, index);&nbsp; &nbsp; &nbsp; // Copy the second part&nbsp; &nbsp; &nbsp; Array.Copy(source, index+1, result, index, source.Length - (index+1));&nbsp; &nbsp; &nbsp; return result;&nbsp; &nbsp;}}&nbsp;用法int[] N = new int[]{1,0,6,0,3,4};var result = N.RemoveElement(1);例子public static void Main(){&nbsp; &nbsp;int[] N = new int[]{1,0,6,0,3,4};&nbsp; &nbsp;Console.WriteLine(string.Join(",", N.RemoveElement(1)));&nbsp; &nbsp;Console.WriteLine(string.Join(",", N.RemoveElement(0)));&nbsp; &nbsp;Console.WriteLine(string.Join(",", N.RemoveElement(5)));}输出1,6,0,3,40,6,0,3,41,0,6,0,3完整的演示在这里其他资源复制(数组,Int32,数组,Int32,Int32)从指定源索引开始的 Array 中复制一系列元素,并将它们粘贴到从指定目标索引开始的另一个 Array。长度和索引指定为 32 位整数。

慕莱坞森

你可以使用这个:int[] N = new int[]{1,0,6,0,3,4};var foos = new List<int>(N);int indexToRemove = 1;foos.RemoveAt(indexToRemove);N = foos.ToArray();foreach(int elem in N )&nbsp; &nbsp; Console.WriteLine(elem);仅供参考:对于高性能/频繁访问,不建议使用 linq。
打开App,查看更多内容
随时随地看视频慕课网APP