Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

AW: Generics: alle mit Base Type verwenden

  Alt 27. Dez 2010, 14:53
In Java gibt es ein
Code:
if (x is IGeneric<?>)
Das ist kein Feature, das ist Type Erasure . Dank der sind Typsicherheit und Generics zwei unvereinbare Dinge. C# bietet ab 4.0 dagegen über Ko-/Kontravarianz einen vernünftigen Weg an:
Code:
   class Base { }
   class Derived : Base { }
   interface IGeneric<out T>
      where T : Base
   {
      T Foo { get; }
   }

...

         IGeneric<Derived> a = ...;
         Console.WriteLine(a is IGeneric<Base>); // True
         var b = (IGeneric<Base>)a;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat