How can I dynamically create an array in C#?
            Asked
            
        
        
            Active
            
        
            Viewed 6.5k times
        
    7 Answers
24
            
            
        I'd like to add to Natrium's answer that generic collections also support this .ToArray() method.
List<string> stringList = new List<string>();
stringList.Add("1");
stringList.Add("2");
stringList.Add("3");
string[] stringArray = stringList.ToArray();
 
    
    
        Gerrie Schenck
        
- 22,148
- 20
- 68
- 95
- 
                    1As a note, they support ToArray() because internally, list is just plain using an immutable array and growing it with new allocations as needed. – Dec 07 '14 at 10:50
8
            
            
        First make an arraylist. Add/remove items. And then ArrayList.ToArray()
And there is your array!
 
    
    
        Natrium
        
- 30,772
- 17
- 59
- 73
7
            
            
        object foo = Array.CreateInstance(typeof(byte), length);
 
    
    
        SgtOJ
        
- 569
- 2
- 10
- 23
 
    
    
        Matthew Flaschen
        
- 278,309
- 50
- 514
- 539
7
            
            
        Ok so array initialisation gets me every single time. so I took 10 minutes to do this right.
    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]);
        }
    }
 
    
    
        Michael Dausmann
        
- 4,202
- 3
- 35
- 48
2
            You can also use the new operator just like with other object types:
int[] array = new int[5];
or, with a variable:
int[] array = new int[someLength];
 
    
    
        Bojan Resnik
        
- 7,320
- 28
- 29
- 
                    10
- 
                    
- 
                    once defined, you will need to re-initiate the array in order to add more than 5 items – Natrium May 19 '09 at 09:44
- 
                    3That's correct - however, the OP asked about dynamic creation of arrays, not necessarily about the ability to dynamically grow an array. – Bojan Resnik May 19 '09 at 10:55
-1
            
            
        int[] array = { 1, 2, 3, 4, 5};
for (int i=0;i<=array.Length-1 ;i++ ) {
  Console.WriteLine(array[i]);
}
 
    
    
        Jan Doggen
        
- 8,799
- 13
- 70
- 144
 
    
    
        sina rezaei
        
- 1
- 1
 
    