Ein Array anonymer Objekte in C # deklarieren und verwenden

8

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.

    
Fábio Antunes 02.01.2013, 00:45
quelle

4 Antworten

4

[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%     
JerKimball 02.01.2013, 01:01
quelle
17
  

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%
  

Wie empfehlen Sie, es mit einer For- und einer Foreach-Schleife zu durchlaufen.

%Vor%

oder

%Vor%     
Eric Lippert 02.01.2013 01:01
quelle
0

Sie können var in foreach :

verwenden %Vor%

Demo

    
Tim Schmelter 02.01.2013 00:59
quelle
0

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.

%Vor%

Beim Iterieren können Sie var in Ihrer for / foreach -Schleife verwenden, um das Problem der Deklaration des Typs zu vermeiden.

%Vor%

BEARBEITEN: eine weitere Problemumgehung, um ein leeres Array mit einer beliebigen Anzahl von Elementen zu erstellen, basierend auf einem Sample.

%Vor%     
Mir 02.01.2013 00:49
quelle

Tags und Links