Where T : Enum?

April 17, 2008 18:13 by Andre Loker

Mir ist nicht klar, warum C# bei den Constraints von generischen Typen und Methoden manchmal so pingelig ist, obwohl die CLR die entsprechenden Constraints erlaubt.

Beispiel: folgender Code ist in C# nicht kompilierbar

   1: class X {
   2:     public void MachWas<T>(T foo) where T : Enum {
   3:     }
   4: }

error CS0702: Constraint cannot be special class 'System.Enum'

In C++/CLI kein Problem:

   1: ref class X {
   2:     generic<typename T> where T : System::Enum
   3:     void MachWas( T foo) {
   4:     }
   5: };