Существует ли метод создания динамического массива в C#?
Дополняю ответ Криса и Мигола примером кода.
Использование массива
Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
Использование общего списка. Под капотом класс List
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();
Конечно, это имеет смысл только если размер массива не известен ни экс-Анте. если вы уже знаете размер вашего массива в какой-то момент программы лучше начать его как массив фиксированной длины. (Если вы извлечения данных из результирующего набора для пример, вы могли рассчитывать его размер и инициировать массив такого размера, динамически)
List<T>
для сильно типизированных, или ArrayList
, если у вас .NET 1.1 или вы любите приводить переменные.
Вы можете сделать это с динамическими объектами:
var dynamicKeyValueArray = new[] { new {Key = "K1", Value = 10}, new {Key = "K2", Value = 5} };
foreach(var keyvalue in dynamicKeyValueArray)
{
Console.Log(keyvalue.Key);
Console.Log(keyvalue.Value);
}
Пример Динамического Массива:
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 и когда он получает полный, новый массив, созданный с его двойной размер и данные из первого массива копируются во второй массив, теперь новый элемент будет вставлен в новый массив. Также имя второго массива создает псевдоним первого, так что оно может быть получено такое же имя, как предыдущий и первый массив получает утилизировать
Этот ответ, кажется, ответ, который вы ищете https://stackoverflow.com/questions/7478048/why-cant-i-do-this-dynamic-x-new-expandoobject-foo-12-bar-twelve
Читали о ExpandoObject здесь https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(в=против 110).аспн
И "динамический" тип здесь https://msdn.microsoft.com/en-GB/library/dd264736.aspx