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?