Gibt es eine Methode zum Erstellen eines dynamischen Arrays in C #?
Gibt es eine Methode zum Erstellen eines dynamischen Arrays in C #?
Antworten:
Schauen Sie sich die allgemeinen Listen an .
dynamic[] bezieht sich nicht auf eine generische Liste. Die Frage könnte sich auf msdn.microsoft.com/en-GB/library/dd264736.aspx (Array dynamischer Typen) oder ExpandoObject msdn.microsoft.com/ beziehen. en-us / library /… Ich könnte -1 die Antwort dafür geben, dass ich diese nicht erwähne
Erweitern Sie die Antwort von Chris und Migol mit einem Codebeispiel.
Verwenden eines Arrays
Student[] array = new Student[2];
array[0] = new Student("bob");
array[1] = new Student("joe");
Verwenden einer generischen Liste. Unter der Haube verwendet die List <T> -Klasse ein Array für die Speicherung, dies jedoch so, dass es effizient wachsen kann.
List<Student> list = new List<Student>();
list.Add(new Student("bob"));
list.Add(new Student("joe"));
Student joe = list[1];
Manchmal werden einfache Arrays generischen Listen vorgezogen, da sie bequemer sind (bessere Leistung für kostspielige Berechnungen, z. B. numerische Algebra-Anwendungen oder für den Datenaustausch mit Statistiksoftware wie R oder Matlab).
In diesem Fall können Sie die ToArray () -Methode verwenden, nachdem Sie Ihre Liste dynamisch initiiert haben
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
string[] array = list.ToArray();
Dies ist natürlich nur dann sinnvoll, wenn die Größe des Arrays nie bekannt oder ex ante festgelegt ist . Wenn Sie die Größe Ihres Arrays bereits zu einem bestimmten Zeitpunkt des Programms kennen , ist es besser, es als Array mit fester Länge zu initiieren. (Wenn Sie beispielsweise Daten aus einem ResultSet abrufen, können Sie dessen Größe zählen und dynamisch ein Array dieser Größe initiieren.)
Beispiel für ein dynamisches Array:
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();
Verwenden Sie die Array-Liste, die das Array tatsächlich implementiert. Es benötigt zunächst ein Array der Größe 4, und wenn es voll ist, wird ein neues Array mit seiner doppelten Größe erstellt und die Daten des ersten Arrays werden in das zweite Array kopiert. Jetzt wird das neue Element in ein neues Array eingefügt. Außerdem erstellt der Name des zweiten Arrays einen Alias des ersten Arrays, sodass auf ihn unter demselben Namen wie zuvor zugegriffen werden kann und das erste Array entsorgt wird
Diese Antwort scheint die Antwort zu sein, nach der Sie suchen. Warum kann ich das nicht tun: dynamic x = new ExpandoObject {Foo = 12, Bar = "zwölf"}
Lesen Sie ExpandoObjecthier https://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=vs.110).aspx
Und der dynamicTyp hier https://msdn.microsoft.com/en-GB/library/dd264736.aspx