在C#中动态创建数组

8

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


3
你的意思是什么?请展示一些伪代码来说明你的想法。 - shahkalpesh
1
你的意思是你应该能够调整数组大小吗? - blitzkriegz
7个回答

24

我想要补充一下Natrium的回答,泛型集合也支持这个.ToArray()方法。

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

1
作为一条注释,它们支持ToArray(),因为在内部,列表只是使用不可变数组并根据需要进行新的分配来扩展它。 - user562566

8

首先创建一个ArrayList,添加/删除项目。然后使用ArrayList.ToArray()方法。

这样就得到了你的数组!


7
object foo = Array.CreateInstance(typeof(byte), length);

7

好的,数组初始化总是让我 每次都犯错。所以我花了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]);
        }
    }

2

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

int[] array = new int[5];

或者,使用变量:

int[] array = new int[someLength];

10
这不太活跃,是吧? - Gerrie Schenck
为什么不呢?你可以使用变量而不是字面量 5。 - Bojan Resnik
一旦定义了,您需要重新初始化数组以添加超过5个项目。 - Natrium
3
正确的 - 但是,OP 提到的是动态创建数组的能力,而不一定是动态增长数组的能力。 - Bojan Resnik

-1
int[] array = { 1, 2, 3, 4, 5};

for (int i=0;i<=array.Length-1 ;i++ ) {
  Console.WriteLine(array[i]);
}

-1

使用泛型列表或ArrayList。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接