Wie bekomme ich ein bestimmtes abgeleitetes Objekt in einer ListT?

7

Nehmen wir an, ich habe eine generische Liste von Fruit ( List<Fruit> fruits = new List<Fruit>() ). Ich füge dann ein paar Objekte hinzu (alle abgeleitet von Fruit ) - Banana , Apple , Orange , aber mit unterschiedlichen Eigenschaften für die abgeleiteten Objekte (zB Banana.IsYellow ).

%Vor%

Dann kann ich das tun:

%Vor%

Aber zur Ausführungszeit ist das natürlich nicht gültig, weil es keine IsYellow -Eigenschaft auf den Apple- und Orange-Objekten gibt.

Wie bekomme ich nur die Bananen, Äpfel, Orangen usw. aus dem List<Fruit> ?

    
antirysm 11.06.2009, 13:15
quelle

5 Antworten

31
%Vor%     
Mehrdad Afshari 11.06.2009, 13:16
quelle
3

Sie könnten einfach

tun %Vor%     
Ian 11.06.2009 13:17
quelle
3

Schritt 1: Zuerst sollten Sie eine Unterliste aus der Obstliste erstellen. Um die Unterliste zu erstellen, benutzen Sie Generic's FindAll() und Predicate Funktion.

Schritt 2: Später können Sie in der Untergruppe iterieren, die nur 'Banana' enthält

Hier ist der Code

Schritt 1:

%Vor%

Schritt 2: Hier kommt die Prädikatfunktion

%Vor%     
Kaz 11.06.2009 14:10
quelle
1

Ich persönlich finde diese Methode besser lesbar:

%Vor%     
NascarEd 11.06.2009 13:51
quelle
1

Hinzufügen einer anderen Syntax, obwohl .OfType & lt; Banana & gt; () ist wahrscheinlich die beste.

%Vor%     
Nefzen 11.06.2009 14:41
quelle

Tags und Links