Dienstag, Januar 02, 2007

Covarianz & Contravarianz

Zum meinem grossen Schrecken mußte ich gerade feststellen, daß VB.NET nicht wie C# Covarianz und Contravarianz in Delegates unterstützt.
In .C# 1.x und immer noch in VB.NET muss aufgrund von Invarianz eine Methode mit der Signatur eines zugehörigen Delegates exakt zusammenpassen. Mit der Version von 2.0 unterstützt C# auch Contravarianz bei Paramtertypen und Covarianz bei Rückgabetypen. Somit kann man Delegates mit Methoden verwenden, deren Parameter in der in der Vererbungshierachie vor den zugehörigen Typen kommen bzw. mit einer Methode dessen Rückgabetyp abgeleitet vom Rückgabetyp des Delegate ist. Das finde ich gar nicht so lustig, da dann viel mehr Type Casts im VB.NET Code eingefügt werden müssen als in C#-Code. C# geht da wohl schon viel konsequenter in Version 2.0 des .NET Framework den Weg einer dynamischen Sprache als VB.NET. Und damit hat man mit C# nicht nur in diesem Fall duch schnellere Entwicklung, verbesserte Betriebssicherheit und höhere Ausführungsgeschwindigkeit im Gegensatz zu VB.NET die Nase vorn.

Keine Kommentare: