在C#中动态创建数组

sau*_*abh 5 c#

如何在C#中动态创建数组?

Ger*_*nck 21

我想补充Natrium的答案,即泛型集合也支持这种.ToArray()方法.

List<string> stringList = new List<string>();
stringList.Add("1");
stringList.Add("2");
stringList.Add("3");
string[] stringArray = stringList.ToArray();
Run Code Online (Sandbox Code Playgroud)


Nat*_*ium 8

首先做一个arraylist.添加/删除项目.然后ArrayList.ToArray()

还有你的阵列!


Mic*_*ann 6

好吧,数组初始化每次都让我得到。所以我花了 10 分钟才把这件事做好。

    static void Main(string[] args)
    {
        String[] as1 = new String[] { "Static", "with", "initializer" };
        ShowArray("as1", as1);

        String[] as2 = new String[5];
        as2[0] = "Static";
        as2[2] = "with";
        as2[3] = "initial";
        as2[4] = "size";
        ShowArray("as2", as2);

        ArrayList al3 = new ArrayList();
        al3.Add("Dynamic");
        al3.Add("using");
        al3.Add("ArrayList");
        //wow! this is harder than it should be
        String[] as3 = (String[])al3.ToArray(typeof(string));
        ShowArray("as3", as3);

        List<string> gl4 = new List<string>();
        gl4.Add("Dynamic");
        gl4.Add("using");
        gl4.Add("generic");
        gl4.Add("list");
        //ahhhhhh generic lubberlyness :)
        String[] as4 = gl4.ToArray();   
        ShowArray("as4", as4);
    }

    private static void ShowArray(string msg, string[] x)
    {
        Console.WriteLine(msg);
        for(int i=0;i<x.Length;i++)
        {
            Console.WriteLine("item({0})={1}",i,x[i]);
        }
    }
Run Code Online (Sandbox Code Playgroud)


Mat*_*hen 5

object foo = Array.CreateInstance(typeof(byte), length);
Run Code Online (Sandbox Code Playgroud)


Boj*_*nik 2

您还可以new像使用其他对象类型一样使用该运算符:

int[] array = new int[5];
Run Code Online (Sandbox Code Playgroud)

或者,使用变量:

int[] array = new int[someLength];
Run Code Online (Sandbox Code Playgroud)

  • 这不太动态吧? (10认同)
  • 这是正确的 - 然而,OP 询问了数组的动态创建,不一定涉及动态增长数组的能力。 (3认同)