相关疑难解决方法(0)

C#中的枚举类型约束

可能重复:
任何人都知道缺少枚举通用约束的好方法?

C#不允许对Enums 进行类型约束的原因是什么?我确信疯狂背后有一种方法,但我想明白为什么不可能.

以下是我希望能够做到的(理论上).

public static T GetEnum<T>(this string description) where T : Enum
{
...
}
Run Code Online (Sandbox Code Playgroud)

.net c# enums

149
推荐指数
4
解决办法
5万
查看次数

任何人都知道缺乏枚举通用约束的好方法吗?

我想要做的是这样的:我有枚举标记值的枚举.

public static class EnumExtension
{
    public static bool IsSet<T>( this T input, T matchTo ) 
        where T:enum //the constraint I want that doesn't exist in C#3
    {    
        return (input & matchTo) != 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

那么我可以这样做:

MyEnum tester = MyEnum.FlagA | MyEnum.FlagB

if( tester.IsSet( MyEnum.FlagA ) )
    //act on flag a
Run Code Online (Sandbox Code Playgroud)

不幸的是,C#的通用,其中约束没有枚举限制,只有类和结构.C#不会将枚举视为结构(即使它们是值类型),因此我无法像这样添加扩展类型.

有没有人知道解决方法?

.net c# enums flags

87
推荐指数
6
解决办法
2万
查看次数

标签 统计

.net ×2

c# ×2

enums ×2

flags ×1