2009-05-19 2 views
5

Как я могу динамически создать массив на C#?Динамическое создание массива в C#

+3

Что вы имеете в виду под этим? Пожалуйста, покажите некоторый псевдокод того, что вы пытаетесь. – shahkalpesh

+1

Вы имеете в виду, что вы должны иметь возможность изменять размер массива? – blitzkriegz

ответ

1

Вы также можете использовать оператор new так же, как и с другими типами объектов:

int[] array = new int[5]; 

или с переменной:

int[] array = new int[someLength]; 
+7

Это не совсем динамично? –

+0

Почему бы и нет? Вы можете использовать переменную вместо литерала 5. –

+0

, как только вы определили, вам нужно будет повторно инициализировать массив, чтобы добавить более 5 элементов. – Natrium

8

Сначала сделайте arraylist. Добавить/удалить элементы. А затем ArrayList.ToArray()

И есть ваш массив!

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

Я хотел бы добавить к ответу Natrium, что общие коллекции также поддерживают этот метод .ToArray().

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

В качестве примечания они поддерживают ToArray(), потому что изнутри список просто используется с неизменяемым массивом и при необходимости увеличивается с новыми выделениями. – 2014-12-07 10:50:59

4

Хорошо, поэтому инициализация массива получает меня каждый раз. поэтому я потратил 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]); 
     } 
    } 
-1
int[] array = { 1, 2, 3, 4, 5}; 

for (int i=0;i<=array.Length-1 ;i++) { 
    Console.WriteLine(array[i]); 
} 
Смежные вопросы