我有以下通用功能:
public SomeType SomeFunction<T>(T value)
{
}
Run Code Online (Sandbox Code Playgroud)
我现在想限制这个泛型函数只用于Enums,所以我尝试了以下内容:
public SomeType SomeFunction<T>(T value) where T : System.Enum
{
}
Run Code Online (Sandbox Code Playgroud)
但这导致:
错误CS0702:约束不能是特殊类'System.Enum'
是否存在好奇心的工作是否有人知道为什么不允许这种类型的约束?
你不能.您可以将其限制为值类型,但这就是全部.将其限制为枚举只能使用运行时检查来完成:
public SomeType SomeFunction<T>(T value) where T : struct
{
if (!typeof(T).IsEnum)
{
throw new NotSupportedException("Only enums are supported.");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |