C# - Erstellen einer 'var' array eine Feste Größe?
Ich versuche zu erstellen, die ein array vom Typ var mit einer festen Länge. Ich verwende es in eine var LinkedList-Klasse, die ich erstellt. Ich weiß die Größe des Arrays, die ich erzeugen wollte, nicht wissen, was ist die richtige syntax?
Hier der code:
public dynamic ToArray()
{
int counter = 0;
if (this.head == null)
return null;
else
counter = 1;
ListEntry i = this.head;
while (i.Next != null)
{
counter++;
i = i.Next;
}
var array = new[counter];
i = this.head;
for (int j = 0; j < array.Length; j++)
{
array[j] = i.Data;
i = i.Next;
}
return array;
}
Dieser Teil funktioniert nicht:
var array = new[counter];
Hilfe?
EDIT: Danke für den input allerseits. Ich muss zugeben, dass ich nicht sehr kenntnisreich über die Terminologie der syntaktische Zucker, wenn ich gebucht. Es macht jetzt mehr Sinn.
Die Idee hinter diesem Beitrag war die Erstellung einer dynamischen verketteten Liste-Klasse, die konnte, Griff grundlegenden Wert-Typen.
- Sie haben nicht gesagt, welche Art von array, das Sie wollen. Wenn Sie
var array = new string[counter]
oder sowas, es wird in Ordnung sein. - Es gibt keine solche Sache wie eine "Art
var
", es sei denn, dies ist ein benutzerdefinierter Typ definiert (das wäre eine verrückte schlechte Idee). - Ich glaube, er verkennt
var
(wegen der Aussage: "erstellen Sie ein array vom Typ var")... - Ah, stimmt - ich hatte übersehen, dass bit.
- Irgendeinem Grund Sie nicht mit der LinkedList<T> das ist ein Teil des Rahmens? (und das hat ToArray() via IEnumberable)
- und ReedCopsey ich muss zugeben, dass ich nicht haben ein sehr gutes Verständnis von var bedeutete und die Verwendung von syntaktischen Zucker in C#. Ich habe versucht, erstellen Sie eine vielseitige LinkedList-Klasse für verschiedene Arten. Vielen Dank für Ihre Eingabe.
- Ich habe diese Klasse als Teil einer Aufgabe in der Schule. Es ist viel einfacher und einfach zu bedienen. Und ich bin mir nicht ganz sicher, wie die LInkedList<T> class richtig. Ich habe versucht, zu lernen es zu benutzen, war aber nicht sehr erfolgreich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
var
ist nicht eine Art, es ist nur ein syntaktischen Zucker fürimplizite Typ-definition
.Müssen Sie Ihre array-Typ:Mit
var
lassen Sie den compiler auf den Typ zu schließen.Aber in diesem Fall funktioniert es wie ein Verknüpfung.Trotzdem ist es hilfreich, wenn Sie sich nicht sicher sind, über die Rückgabe-Typ eines Ausdrucks oder eine Methode (es ist zum Beispiel nützlich, wennLINQ
).In dieser Zeile wenn du meinst ein array erstellen können, enthält jede Art von element, das Sie erstellen können, ein array von
objects
oderdynamic
:Oder:
Möchten Sie wahrscheinlich diese:
Aber ich bin nicht sicher, warum Sie wollen, verwenden Sie
dynamic
hier und zurückgebendynamic
von der Methode. Sie wahrscheinlich bereits wissen, die Art derListEntry.Data
- würden Sie wahrscheinlich wollen, um eine array von diesem Typ.dynamic
, sagen zum Beispiel, weilListEntry.Data
dynamisch ist, wird er wohl wirklich will, um wieder einedynamic[]
.dynamic
er zurückkehren könnte alles inklusivedynamic[]
. Aber was Sie vorschlagen, machen den code besser lesbar.Müssen Sie den array-Typ, oder es ist wie in einem Süßwarenladen und sagt: "kann ich einen Sack" und nicht sagen, welche Art Sie möchten, in diesem Fall der compiler. Um ein array deklarieren, die Sie tun können,
Jedoch nicht das erstellen einer var array var ist nicht ein Typ, sondern ein Schlüsselwort in Stelle einer Art, wie C++11 auto. Sie haben zu definieren, die einen bestimmten Typ für das array, oder Sie werden auf Probleme stoßen.
Für Ihren Fall benötigen Sie eine
dynamic
oderobject
array.Oder