Alle möglichen array-Initialisierung Syntax
Was sind all die array-Initialisierung der Syntax, sind möglich mit C#?
InformationsquelleAutor Joshua Girard | 2011-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was sind all die array-Initialisierung der Syntax, sind möglich mit C#?
InformationsquelleAutor Joshua Girard | 2011-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies sind die aktuellen Deklaration und Initialisierung Methoden für einen einfachen array.
Beachten Sie, dass andere Techniken der Erlangung von arrays existieren, wie die Linq -
ToArray()
Erweiterungen aufIEnumerable<T>
.Beachten Sie auch, dass in den Erklärungen oben, die ersten beiden ersetzen könnte, die
string[]
auf der linken Seite mitvar
(C# 3+), wie die Informationen auf der rechten Seite ist genug, um daraus die richtigen Typ. Die Dritte Zeile geschrieben werden muss, wie dargestellt, als array-Initialisierung syntax allein ist nicht genug, um den compiler verlangt. Die vierte könnte auch mit Inferenz. Also wenn Sie in der ganzen Kürze, was kann das obige wie folgt geschrieben werdenVergessen Sie nicht über
new[] { "A", "B" }
InformationsquelleAutor Anthony Pegram
Array Schaffung neuer Syntax in C#, die sind Ausdrücke sind:
In der ersten, die Größe kann eine beliebige nicht-negative ganzzahlige Wert und die array-Elemente initialisiert, den default-Werten.
In der zweiten, die Größe muss eine Konstante und die Anzahl der Elemente entsprechen muss. Es muss eine implizite Konvertierung aus der angegebenen Elemente zu den vorgegebenen array-element-Typ.
In die Dritte, die Elemente müssen implizit Cabrio auf der element-Typs und der Größe bestimmt sich aus der Anzahl der Elemente gegeben.
In die vierte der Typ der array-element ist abgeleitet computing der beste Typ, wenn es einen gibt, der alle angegebenen Elemente, die Typen. Alle Elemente werden muss implizit in diesen Typ konvertiert. Die Größe hängt von der Anzahl der Elemente gegeben. Diese syntax wurde in C# 3.0.
Gibt es auch eine syntax, die nur dann verwendet werden, die in einer Erklärung:
Elemente müssen implizit Cabrio auf den Typ des Elements. Die Größe hängt von der Anzahl der Elemente gegeben.
Verweise ich Sie auf C# 4.0-Spezifikation, Abschnitt 7.6.10.4 "bei der Array-Erstellung Ausdrücke".
Nicht gerade C# "syntax", aber lasst uns nicht vergessen (mein persönlicher Favorit)
Array.CreateInstance(typeof(int), 3)
!Wenn wir gehen hinunter diese Straße,es wird so langsam albern. E. g.,
"1,2,3,4".split(',')
.Dann für mehrdimensionale arrays gibt es "nested" - Notationen wie
new int[,] { { 3, 7 }, { 103, 107 }, { 10003, 10007 }, };
, und so weiter fürint[,,]
,int[,,,]
, ...Sie haben zwei Pferde. Sie möchten wissen, welche schneller ist. Tun Sie (1) Rennen der Pferde, oder (2) Fragen Sie einen fremden auf der internet-wer hat noch nie gesehen, die Pferde, die er denkt, dass Sie schneller ist? Rennen Ihre Pferde. Sie möchten wissen, welche ist mehr "effizient"? Zuerst erstellen Sie einen messbaren standard für Effizienz; denken Sie daran, die Effizienz ist Wert produziert pro Einheit Kosten, also definieren Sie Ihre Wert-und Kosten gezielt. Dann schreiben Sie den code in beide Richtungen und Messen die Effizienz. Verwenden Sie die Wissenschaft zur Beantwortung wissenschaftlicher Fragestellungen, nicht zu Fragen, zufällige fremde für Vermutungen.
InformationsquelleAutor Eric Lippert
Nicht-leeren arrays
var data0 = new int[3]
var data1 = new int[3] { 1, 2, 3 }
var data2 = new int[] { 1, 2, 3 }
var data3 = new[] { 1, 2, 3 }
var data4 = { 1, 2, 3 }
ist nicht kompilierbar. Verwendenint[] data5 = { 1, 2, 3 }
statt.Leere arrays
var data6 = new int[0]
var data7 = new int[] { }
var data8 = new [] { }
undint[] data9 = new [] { }
sind nicht kompilierbar.var data10 = { }
ist nicht kompilierbar. Verwendenint[] data11 = { }
statt.Als argument einer Methode
Nur Ausdrücke zugewiesen werden können mit der
var
Schlüsselwort übergeben werden können, als Argumente.Foo(new int[2])
Foo(new int[2] { 1, 2 })
Foo(new int[] { 1, 2 })
Foo(new[] { 1, 2 })
Foo({ 1, 2 })
ist nicht kompilierbarFoo(new int[0])
Foo(new int[] { })
Foo({})
ist nicht kompilierbarSind die gegebenen Beispiele vollständig? Gibt es irgendeinen anderen Fall?
InformationsquelleAutor kiss my armpit
Wird, erstellen Sie ein array von leeren Zeichenfolgen wiederholt 'count' mal. In Fall, dass Sie zum initialisieren von Arrays mit gleichen noch spezielle Standard-element-Wert. Vorsichtig mit Referenz-Typen, die sich alle Elemente beziehen sich gleiche Objekt.
var arr1 = Enumerable.Repeat(new object(), 10).ToArray();
erhalten Sie 10 Referenzen auf das gleiche Objekt. Erstellen Sie 10 individuelle Objekte, die Sie verwenden könnenvar arr2 = Enumerable.Repeat(/* dummy: */ false, 10).Select(x => new object()).ToArray();
oder ähnliches.InformationsquelleAutor Atomosk
es ist ein gewöhnliches array sein 🙂
InformationsquelleAutor Nahid Camalli
Im Fall, das Sie initialisieren möchten, eine Feste Reihe von pre-initialized gleich (nicht-
null
oder andere alsdefault
) Elemente, verwenden Sie diese:Nehmen Sie bitte auch Teil diese Diskussion.
InformationsquelleAutor Shimmy
Beispiel erstellen Sie ein array von einer eigenen Klasse
Unten ist die definition der Klasse.
Dies ist, wie können Sie das array initialisiert:
InformationsquelleAutor Amol
oder
oder
und in mehrdimensionalen array
InformationsquelleAutor
Wiederholen, ohne LINQ:
InformationsquelleAutor Nick Shalimov
InformationsquelleAutor Sanjay Shrivastava
Anderen Weg, das erstellen und initialisieren ein array von Objekten. Dies ist ähnlich wie die Beispiel, die @Amol oben gepostet hat, außer diese verwendet man Konstruktoren. Ein Hauch von Polymorphismus bestreut, konnte ich nicht widerstehen.
Klassen, die für die Kontext:
InformationsquelleAutor Nick Alexeev
Können Sie auch erstellen Sie dynamische arrays, d.h. Sie können Fragen Sie zuerst die Größe des Arrays vom Benutzer vor dem erstellen von es.
InformationsquelleAutor Pushpendra7974
Triviale Lösung mit Ausdrücken. Beachten Sie, dass mit NewArrayInit können Sie erstellen, die nur ein-dimensionales array.
InformationsquelleAutor unsafePtr