2012-06-13 14 views
7

C# ile aşağıdaki gibi bir şeyi nasıl yapabilirsiniz?Nullable Nasıl Yapılır <Enum>?

Type _nullableEnumType = typeof(Enum?); 

Ben Bunu yapmak zaman bunu yapamaz neden daha iyi bir soru olduğunu tahmin:

Type _nullableDecimalType = typeof(decimal?); 
+1

Böyle bir tür gerçekten yok - nasıl kullanmayı planlıyorsunuz? Enum'un kendisi bir referans türü değil, bir değer türüdür. –

cevap

14

Enumdeğildir enum - bu çeteleler için taban-sınıftır, ve bir referans tipi (yani bir class). Bu,'un Nullable<T>'un T : struct ve Enum'un bunu karşılayamadığı bir kısıtlamaya sahip olduğu anlamına gelir.

Yani: ya da o hatırlamak isteyebilirsiniz typeof(Nullable<>).MakeGenericType(enumTypeKnownAtRuntime), ya da sadece daha fazla, typeof(EnumTypeKnownAtCompileTime?)

kullanın: genellikle Enum kullanmaktan kaçınmalısınız, böylece

Enum x = {some value}; 

, bir boks operasyonu olduğunu Bir parametre gibi

+0

vay özledim :) –

+0

Büyük açıklama Mark. Teşekkürler. – devlife

İlgili konular