Remove element of a regular array

前端 未结 15 2496
野性不改
野性不改 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:48

    As usual, I'm late to the party...

    I'd like to add another option to the nice solutions list already present. =)
    I would see this as a good opportunity for Extensions.

    Reference: http://msdn.microsoft.com/en-us/library/bb311042.aspx

    So, we define some static class and in it, our Method.
    After that, we can use our extended method willy-nilly. =)

    using System;
    
    namespace FunctionTesting {
    
        // The class doesn't matter, as long as it's static
        public static class SomeRandomClassWhoseNameDoesntMatter {
    
            // Here's the actual method that extends arrays
            public static T[] RemoveAt( this T[] oArray, int idx ) {
                T[] nArray = new T[oArray.Length - 1];
                for( int i = 0; i < nArray.Length; ++i ) {
                    nArray[i] = ( i < idx ) ? oArray[i] : oArray[i + 1];
                }
                return nArray;
            }
        }
    
        // Sample usage...
        class Program {
            static void Main( string[] args ) {
                string[] myStrArray = { "Zero", "One", "Two", "Three" };
                Console.WriteLine( String.Join( " ", myStrArray ) );
                myStrArray = myStrArray.RemoveAt( 2 );
                Console.WriteLine( String.Join( " ", myStrArray ) );
                /* Output
                 * "Zero One Two Three"
                 * "Zero One Three"
                 */
    
                int[] myIntArray = { 0, 1, 2, 3 };
                Console.WriteLine( String.Join( " ", myIntArray ) );
                myIntArray = myIntArray.RemoveAt( 2 );
                Console.WriteLine( String.Join( " ", myIntArray ) );
                /* Output
                 * "0 1 2 3"
                 * "0 1 3"
                 */
            }
        }
    }
    

提交回复
热议问题