Wie oft deklarieren wir eine einfache Klasse oder Struktur für einige Eigenschaften, um sie nur einmal zu verwenden, wenn sie von einer Methode zurückgegeben werden. Viel zu oft denke ich, glücklicherweise haben wir immer anonyme Objekte, die zur Laufzeit deklariert werden können.
Mit diesem Gedanken möchte ich wissen, wie ich ein Array solcher anonymer Objekte deklarieren kann.
Beispiel:
%Vor%Dadurch wurde ein anonymes Objekt mit zwei Eigenschaften erstellt, von denen eine eine Ganzzahl und eine andere Zeichenfolge ist.
Alles gut hier, aber wie sollte ich ein Array dieser Art von Objekt deklarieren, und wie würden Sie empfehlen, es mit einem for
und foreach
Schleifen zu durchlaufen.
Die foreach
Schleife ist wirklich das Problem, denke ich, weil foreach Schleifen einen deklarierten Typ erwarten. Trotzdem könnte es einen Weg geben, wenn es da wäre, würde ich es natürlich auch wissen.
[Bearbeiten - aktualisiert, um Population, grundlegende Aufzählung usw. anzuzeigen]
Wie @Eve sagt, LINQ ist hier dein Freund; Als allgemeine Faustregel gilt: Versuchen Sie nicht, anonyme Typen herumzugeben - Sie können, wenn Sie clever sind -, aber es ist ein GROSSER Schmerz im Hinterteil, mit ihnen außerhalb des Kontexts / Bereichs umzugehen Sie wurden erklärt.
Um zu sehen, entschied ich zu sehen, auf welche Weise man "ein Array eines anonymen Typs deklarieren könnte", als ein lustiges Gedankenexperiment und kam auf diese:
(Hinweis: der "Dump" liegt daran, dass dies in LINQPad geschrieben wurde)
%Vor%Wie oft deklarieren wir eine einfache Klasse oder Struktur für einige Eigenschaften, um sie nur einmal zu verwenden, wenn sie von einer Methode zurückgegeben werden. Viel zu oft denke ich, glücklicherweise haben wir immer anonyme Objekte, die zur Laufzeit deklariert werden können.
Ihr erster und zweiter Satz zeigt an, dass Sie widersprüchliche Zwecke im Sinn haben. Anonyme Typen und daher Arrays mit anonymen Typen können nicht einfach von einer Methode zurückgegeben werden, da der Rückgabetyp nicht deklariert werden kann. Versuchen Sie, nur anonyme Typen für temporäre lokale Variablen zu verwenden.
Mit diesem Gedanken möchte ich wissen, wie ich ein Array solcher anonymer Objekte deklarieren kann.
So:
%Vor%%Vor%Wie empfehlen Sie, es mit einer For- und einer Foreach-Schleife zu durchlaufen.
oder
%Vor%Sie können LINQ verwenden, um zu erreichen, was Sie brauchen. Hier ist ein Beispiel.
%Vor% Alternativ können Sie diese Problemumgehung verwenden, wenn Sie nur das Array, aber nicht die Daten haben möchten. Das Ergebnis ist jedoch ein Array
, ohne Angaben zum Typ der Elemente.
Beim Iterieren können Sie var
in Ihrer for
/ foreach
-Schleife verwenden, um das Problem der Deklaration des Typs zu vermeiden.
BEARBEITEN: eine weitere Problemumgehung, um ein leeres Array mit einer beliebigen Anzahl von Elementen zu erstellen, basierend auf einem Sample.
%Vor%Tags und Links .net c# anonymous-types