Ist es möglich, ein leeres Array ohne Angabe der Größe zu erstellen?
Zum Beispiel habe ich erstellt:
String[] a = new String[5];
Können wir das obige String-Array auch ohne die Größe erstellen?
Ist es möglich, ein leeres Array ohne Angabe der Größe zu erstellen?
Zum Beispiel habe ich erstellt:
String[] a = new String[5];
Können wir das obige String-Array auch ohne die Größe erstellen?
Wenn Sie eine Sammlung verwenden wollen, deren Größe Sie nicht im Voraus kennen, gibt es bessere Optionen als Arrays.
Verwenden Sie eine List<string>
stattdessen - damit können Sie so viele Elemente hinzufügen, wie Sie brauchen, und wenn Sie ein Array zurückgeben müssen, rufen Sie ToArray()
auf die Variable.
var listOfStrings = new List<string>();
// do stuff...
string[] arrayOfStrings = listOfStrings.ToArray();
Wenn Sie debe ein leeres Array erstellen, können Sie dies tun:
string[] emptyStringArray = new string[0];
In .NET 4.6 ist der bevorzugte Weg, eine neue Methode zu verwenden, Array.Empty
:
String[] a = Array.Empty<string>();
En Umsetzung ist kurz und bündig und verwendet wie sich statische Mitglieder in generischen Klassen in .Net verhalten :
public static T[] Empty<T>()
{
return EmptyArray<T>.Value;
}
// Useful in number of places that return an empty byte array to avoid
// unnecessary memory allocation.
internal static class EmptyArray<T>
{
public static readonly T[] Value = new T[0];
}
(vertragsbezogener Code aus Gründen der Übersichtlichkeit entfernt)
Siehe auch:
Array.Empty
Quellcode auf ReferenzquelleArray.Empty<T>()
Es hat wenig Sinn, ein Array ohne Größe zu deklarieren. Ein Array geht es um Größe . Wenn Sie ein Array mit einer bestimmten Größe deklarieren, geben Sie die feste Anzahl der verfügbaren Slots in einer Sammlung an, die Dinge aufnehmen können, und entsprechend wird Speicher zugewiesen. Um etwas hinzuzufügen, müssen Sie das bestehende Array ohnehin neu initialisieren (auch wenn Sie die Größe des Arrays ändern), siehe diesen Thread ). Einer der seltenen Fälle, in denen man ein leeres Array initialisieren möchte, wäre die Übergabe von array als Argument.
Wenn Sie eine Sammlung definieren wollen, von der Sie nicht wissen, wie groß sie möglicherweise sein könnte, ist Array nicht Ihre Wahl, sondern etwas wie ein List<T>
oder ähnlich.
Die einzige Möglichkeit, ein Array ohne Angabe der Größe zu deklarieren, ist ein leeres Array von Größe 0 . hemant y Alex Dn bietet zwei Möglichkeiten. Eine andere, einfachere Alternative ist, einfach :
string[] a = { };
[ Die Elemente innerhalb der Klammer sollten z.B. implizit in den definierten Typ konvertierbar sein, string[] a = { "a", "b" };
]
Oder eine andere:
var a = Enumerable.Empty<string>().ToArray();
Hier ist ein deklarativerer Weg :
public static class Array<T>
{
public static T[] Empty()
{
return Empty(0);
}
public static T[] Empty(int size)
{
return new T[size];
}
}
Jetzt können Sie anrufen:
var a = Array<string>.Empty();
//or
var a = Array<string>.Empty(5);
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.