2016-07-01 11 views
2

Sagen, ich habe die folgende Struktur (Unvollständige Code)Finden Unterklasse Mitglied in einer Liste der Oberklasse. C#

public class Person{} 
public class Adult : Person{ 
    bool hasCar; 
} 
public class Child : Person{ 
    bool goesToSchool; 
} 

Und ich habe eine Liste von Person:

List<Person> people = new List<Person>; 

und die Liste mit Erwachsenen und Kindern bevölkert.

Sagen wir, ich möchte den ersten Erwachsenen finden, wo hasCar wahr ist.

Ich habe versucht:

Adult carOwner = people.Find((Adult x) => x.hasCar); 

dieser Versuch, erhalte ich eine Fehlermeldung:

„Kann nicht Lambda-Ausdruck konvertiert Typ‚Prädikats < Person>‘zu delegieren, weil die Parametertypen nicht übereinstimmen den Delegaten Parameter Typen. Parameter 1 wird als Typ 'Adult' deklariert, sollte aber 'Person' sein. "

Ich hätte gedacht, weil Adult eine Unterklasse von Person ist, dass die Umwandlung gültig sein sollte. Was muss ich tun, damit mein Code funktioniert?

Antwort