Tag: 标志

对枚举最常见的C#按位操作

对于我的生活,我不记得如何设置,删除,切换或testing位字段。 要么我不确定,要么混合起来,因为我很less需要这些。 所以一个“一点点小抄”将是很好的。 例如: flags = flags | FlagsEnum.Bit4; // Set bit 4. 要么 if ((flags & FlagsEnum.Bit4)) == FlagsEnum.Bit4) // Is there a less verbose way? 你可以给所有其他常用操作的例子,最好在C#语法中使用[Flags]枚举?

任何人都知道一个很好的解决方法,缺乏枚举通用约束?

我想要做的是这样的:我已经枚举了标记值的组合。 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; } } 那么我可以这样做: MyEnum tester = MyEnum.FlagA | MyEnum.FlagB if( tester.IsSet( MyEnum.FlagA ) ) //act on flag a 不幸的是C#的generics约束没有枚举限制,只有类和结构。 C#没有看到枚举作为结构(即使它们是值types),所以我不能像这样添加扩展types。 任何人都知道解决方法?

C#中的枚举属性是什么意思?

我不时会看到如下的枚举: [Flags] public enum Options { None = 0, Option1 = 1, Option2 = 2, Option3 = 4, Option4 = 8 } 我不明白[Flags] -attribute究竟做了什么。 任何人有一个很好的解释或例子,他们可以发布?