Remove element of a regular array

前端 未结 15 2615
野性不改
野性不改 2020-11-22 10:06

I have an array of Foo objects. How do I remove the second element of the array?

I need something similar to RemoveAt() but for a regular array.

15条回答
  •  天命终不由人
    2020-11-22 10:38

    Here is an old version I have that works on version 1.0 of the .NET framework and does not need generic types.

    public static Array RemoveAt(Array source, int index)
    {
        if (source == null)
            throw new ArgumentNullException("source");
    
        if (0 > index || index >= source.Length)
            throw new ArgumentOutOfRangeException("index", index, "index is outside the bounds of source array");
    
        Array dest = Array.CreateInstance(source.GetType().GetElementType(), source.Length - 1);
        Array.Copy(source, 0, dest, 0, index);
        Array.Copy(source, index + 1, dest, index, source.Length - index - 1);
    
        return dest;
    }
    

    This is used like this:

    class Program
    {
        static void Main(string[] args)
        {
            string[] x = new string[20];
            for (int i = 0; i < x.Length; i++)
                x[i] = (i+1).ToString();
    
            string[] y = (string[])MyArrayFunctions.RemoveAt(x, 3);
    
            for (int i = 0; i < y.Length; i++)
                Console.WriteLine(y[i]);
        }
    }
    

提交回复
热议问题