Есть ли способ создания динамического массива на C #?
Есть ли способ создания динамического массива на C #?
Ответы:
Взгляните на общие списки .
dynamic[] задан о msdn.microsoft.com/en-GB/library/dd264736.aspx (массив динамических типов) или ExpandoObject msdn.microsoft.com/ en-us / library /… Я мог бы -1 ответ за то, что не упомянул об этом
Расширение ответа Криса и Мигола образцом кода.
Использование массива
Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
Использование общего списка. Под капотом класс List <T> использует массив для хранения, но делает это таким образом, чтобы он мог эффективно расти.
List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];
Иногда простые массивы предпочтительнее общих списков, поскольку они более удобны (лучшая производительность для дорогостоящих вычислений - например, для приложений числовой алгебры или для обмена данными с программным обеспечением для статистики, таким как R или Matlab)
В этом случае вы можете использовать метод ToArray () после динамического запуска списка.
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
string[] array = list.ToArray();
Конечно, это имеет смысл только в том случае, если размер массива никогда не известен и не фиксирован заранее . если вы уже знаете размер вашего массива в какой-то момент программы, лучше запустить его как массив фиксированной длины. (Если вы, например, извлекаете данные из ResultSet, вы можете подсчитать его размер и динамически инициировать массив этого размера)
Пример динамического массива:
Console.WriteLine("Define Array Size? ");
int number = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter numbers:\n");
int[] arr = new int[number];
for (int i = 0; i < number; i++)
{
arr[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < arr.Length; i++ )
{
Console.WriteLine("Array Index: "+i + " AND Array Item: " + arr[i].ToString());
}
Console.ReadKey();
Используйте список массивов, который фактически является массивом реализации. Первоначально он принимает массив размера 4, и когда он заполняется, создается новый массив с его двойным размером, и данные первого массива копируются во второй массив, теперь новый элемент вставляется в новый массив. Также имя второго массива создает псевдоним первого, так что к нему можно получить доступ по тому же имени, что и предыдущий, и первый массив удаляется
Кажется, этот ответ является тем ответом, который вы ищете. Почему я не могу этого сделать: dynamic x = new ExpandoObject {Foo = 12, Bar = "twelve"}
Прочтите ExpandoObjectздесь https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx
И dynamicтипа здесь https://msdn.microsoft.com/en-GB/library/dd264736.aspx