Чи є якийсь метод створення динамічного масиву в C #?
Чи є якийсь метод створення динамічного масиву в C #?
Відповіді:
Погляньте на загальні списки .
dynamic[] msdn.microsoft.com/en-GB/library/dd264736.aspx (масив динамічних типів) або ExpandoObject msdn.microsoft.com/ uk-нам / бібліотека /… Я міг -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();
Звичайно, це має сенс лише в тому випадку, якщо розмір масиву ніколи не відомий і не фіксований ex-ante . якщо ви вже знаєте розмір свого масиву в якийсь момент програми , краще ініціювати його як масив фіксованої довжини. (Якщо, наприклад, ви отримуєте дані з 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, і коли він заповнюється, створюється новий масив з його подвійним розміром, а дані першого масиву копіюються у другий масив, тепер новий елемент вставляється у новий масив. Також ім'я другого масиву створює псевдонім першого, щоб він міг отримати доступ до того ж імені, що і попередній, і перший масив буде розміщений
Ця відповідь, здається, відповідь, яку ви шукаєте Чому я не можу цього зробити: динамічний х = новий ExpandoObject {Foo = 12, Bar = "дванадцять"}
Прочитайте 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