Eine Katze ist ein Tier - da wird es keinen Wiederspruch geben. Allerdings könnte man nun darauf schließen, dass das selbe auch für Mengen von Katzen und Mengen von Tieren gilt. Dem ist aber nicht so: Eine Menge von Katzen kann nicht wie eine Menge von Tieren behandelt werden - zumindest nicht immer. Beispielsweise darf in eine Menge von Katzen, welche als Menge von Tieren angesehen wird, kein Hund eingefügt werden. Das Ergebnis wäre fatal! Auf der anderen Seite kann eine Menge von Katzen, welche als Menge von Tieren angesehen wird, durchlaufen und für einen Wettbewerb fotografiert werden.
Darüber hinaus kann es aber auch Fälle geben, in denen eine Menge von Tieren wie eine Menge von Katzen behandelt werden kann.
.Net 4 berücksichtigt nun solche nicht immer ganz offensichtlichen Sachverhalte, indem mit den Schlüsselwörtern in und out für Typ-Parameter in Interfaces und Delegates festgelegt werden kann, dass diese nur für Übergabeparameter bzw. nur für Rückgabewerte Verwendung finden dürfen.
Mein aktueller Artikel, der vor einigen Tagen im dotnet-Magazin erschienen ist, widtmet sich diesem Thema, das als Ko- und Kontravarianz bezeichnet wird. Anhand des Beispiels "Knaben im Mädcheninternat" wird die Verwendung dieser neuen Schlüsselwörter erklärt. Weitere Informationen sowie die Beispiele dieses Artikels finden sich hier .
