将枚举值作为参数的泛型C#方法

本文关键字:泛型 方法 参数 枚举 | 更新日期: 2023-09-27 18:07:53

可能重复:
创建将T约束为枚举的泛型方法

给定一个只对枚举值进行操作的通用方法

static void <T> method(T enum) where T ?????
{
     // do something with enum...
}

如何约束T,以便只接受枚举值?我尝试过使用struct,但是这不允许使用可为null的枚举类型调用我的方法。

将枚举值作为参数的泛型C#方法

枚举类型的泛型约束在C#中是不可能的,但在IL中是可能的。看看Jon Skeet的项目Unconstrained Melody,它将允许您将泛型方法约束到枚举。

在C#中不能。出于某种原因,我不知道C#规范明确禁止System.Enum作为约束。

即便如此,它也不会接受可为null的枚举,因为可为null枚举不是枚举。