Динамический массив в С#

Есть ли способ создания динамического массива в С#?

Ответ 2

Развернувшись на ответ Криса и Миголя с образцом кода.

Использование массива

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];

Ответ 3

Иногда простые массивы предпочтительнее общих списков, поскольку они более удобны (например, более высокая производительность для дорогостоящих вычислений -Numerical алгебраических приложений или для обмена данными с программным обеспечением статистики, таким как R или Matlab)

В этом случае вы можете использовать метод ToArray() после динамического запуска списка.

List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");

string[] array = list.ToArray();

Конечно, это имеет смысл только в том случае, если размер массива никогда не известен и не фиксирован заранее. если вы уже знаете размер вашего массива в какой-то момент программы, лучше инициировать его как массив фиксированной длины. (Если вы, например, извлекаете данные из ResultSet, вы можете посчитать их размер и динамически инициировать массив этого размера)

Ответ 4

List<T> для строго типизированного, или ArrayList, если у вас есть .NET 1.1 или любовь к переменным.

Ответ 5

Используйте список массива, который на самом деле реализует массив. Сначала требуется массив размера 4, и когда он заполняется, новый массив создается с его двойным размером, а данные первого массива копируются во второй массив, теперь новый элемент вставляется в новый массив. Также имя второго массива создает первый псевдоним, так что к нему можно получить доступ с тем же именем, что и предыдущий, и первый массив будет удален

Ответ 7

Пример динамической матрицы:

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();

Ответ 8

Вы можете сделать это с динамическими объектами:

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);
}