Czy istnieje metoda tworzenia tablicy dynamicznej w języku C #?
Czy istnieje metoda tworzenia tablicy dynamicznej w języku C #?
Odpowiedzi:
Spójrz na listy ogólne .
dynamic[] msdn.microsoft.com/en-GB/library/dd264736.aspx (tablica typów dynamicznych) lub ExpandoObject msdn.microsoft.com/ en-us / library / ... mogłem -1 odpowiedź na nie wspomnieć o nich
Poszerzenie odpowiedzi Chrisa i Migola o przykład kodu.
Korzystanie z tablicy
Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
Korzystanie z listy ogólnej. Pod maską klasa List <T> używa tablicy do przechowywania, ale robi to w sposób, który pozwala jej efektywnie rosnąć.
List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];
Czasami zwykłe tablice są preferowane zamiast list ogólnych, ponieważ są wygodniejsze (lepsza wydajność przy kosztownych obliczeniach - na przykład aplikacje do algebry numerycznej lub do wymiany danych z oprogramowaniem statystycznym, takim jak R lub Matlab)
W takim przypadku możesz użyć metody ToArray () po dynamicznym zainicjowaniu listy
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
string[] array = list.ToArray();
Oczywiście ma to sens tylko wtedy, gdy rozmiar tablicy nigdy nie jest znany ani ustalony ex ante . jeśli znasz już rozmiar swojej tablicy w którymś momencie programu , lepiej zainicjować ją jako tablicę o stałej długości. (Jeśli na przykład pobierasz dane z zestawu wyników, możesz policzyć jego rozmiar i dynamicznie zainicjować tablicę o tym rozmiarze)
Przykład tablicy dynamicznej:
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();
Użyj listy tablic, która faktycznie implementuje tablicę. Pobiera początkowo tablicę o rozmiarze 4, a kiedy się zapełni, tworzona jest nowa tablica o podwójnym rozmiarze, a dane z pierwszej tablicy są kopiowane do drugiej tablicy, a teraz nowy element jest wstawiany do nowej tablicy. Również nazwa drugiej tablicy tworzy alias pierwszej tablicy, dzięki czemu można uzyskać do niej dostęp pod taką samą nazwą jak poprzednia, a pierwsza tablica zostaje usunięta
Ta odpowiedź wydaje się być odpowiedzią, której szukasz. Dlaczego nie mogę tego zrobić: dynamiczny x = nowy ExpandoObject {Foo = 12, Bar = "dwanaście"}
Przeczytaj o tym ExpandoObjecttutaj https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx
A dynamictyp tutaj https://msdn.microsoft.com/en-GB/library/dd264736.aspx