可能重複:
Create Generic method constraining T to an Enum
Enum type constraints in C#System.Enum與約束
考慮下面的類:
public class Transition<TState>
{
public Transition()
{
if (!typeof(TState).IsEnum)
throw (new ArgumentException("[TState] has to be of type [System.Enum]."));
}
}
理想的情況下,這應該聲明爲:
public class Transition<TState> where TState: System.Enum
{
}
以上這些當然會產生編譯時錯誤。我的問題是爲什麼這是非法的。大多數消息來源解釋說,這是非法的,但不解釋原因。有什麼想法嗎?
此問題已經被討論了很多次,請在發佈問題之前先搜索一下可能的重複[Create Generic method constraining T to Enum](http://stackoverflow.com/questions/79126/create-generic-method-constraining-t-to-an-enum)。還有另一個愚蠢的方法:http://stackoverflow.com/questions/7244/anyone-know-a-good-workaround-for -en-enum-an-enum-generic-constraint –
已經在這裏回答了http://stackoverflow.com/questions/1331739/enum-type-constraints-in-c-sharp – prashanth
@DarinDimitrov:他們不是重複的這兩個問題實際上是一個Rafal指出的重複,我不是在尋找解決方法,只是尋找它背後的原因編輯:這個問題的鏈接是[這裏](http: //stackoverflow.c OM /問題/ 1331739 /枚舉類型約束式-C-尖銳)。 –