可能重複:
Create Generic method constraining T to an Enum通用C#方法回吐,其中枚舉值作爲參數
鑑於只有在枚舉操作的一般方法值
static void <T> method(T enum) where T ?????
{
// do something with enum...
}
如何我是否限制T
這樣只有枚舉值被接受?我試過使用struct
,但是這不允許使用可空的枚舉類型調用我的方法。
可能重複:
Create Generic method constraining T to an Enum通用C#方法回吐,其中枚舉值作爲參數
鑑於只有在枚舉操作的一般方法值
static void <T> method(T enum) where T ?????
{
// do something with enum...
}
如何我是否限制T
這樣只有枚舉值被接受?我試過使用struct
,但是這不允許使用可空的枚舉類型調用我的方法。
對於枚舉類型的通用約束在C#中是不可能的,但在IL中是可能的。看一下Jon Skeet的項目Unconstrained Melody,它可以讓你將泛型方法限制爲枚舉。
在C#中你不行。出於某種原因,我不知道C#規範明確禁止System.Enum
作爲約束條件。
即使這樣它也不會接受可爲空的枚舉,因爲可枚舉的枚舉不是枚舉。
這是一個如何使用IL而不是庫來做到這一點的例子,讓你自己做這件事,但非常有趣! – Justin