Динамический массив в C # - PullRequest
       51

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

101 голосов
/ 27 февраля 2009

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

Ответы [ 8 ]

144 голосов
/ 27 февраля 2009

Взгляните на Общие списки .

79 голосов
/ 27 февраля 2009

Расширение ответа Криса и Мигола с примером кода.

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

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];
49 голосов
/ 02 ноября 2010

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

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

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

string[] array = list.ToArray();

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

37 голосов
/ 27 февраля 2009

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

1 голос
/ 31 июля 2017

Пример динамического массива:

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();
1 голос
/ 24 июня 2015

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

0 голосов
/ 19 ноября 2018

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

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);
}
0 голосов
/ 14 июля 2016
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...