正在研究如何通过使用flags属性和bitwize运算符(见下文)对enums进行装饰来将枚举用作位标志.
.NET框架中是否存在使用此模式的任何位置?我喜欢这个,但想看一些更真实的例子
[Flags]
enum Days2 : int
{
None = 0x0,
Sunday = 0x1,
Monday = 0x2,
Tuesday = 0x4,
Wednesday = 0x8,
Thursday = 0x10,
Friday = 0x20,
Saturday = 0x40
}
Days2 meetingDays = Days2.Tuesday | Days2.Thursday;
// Set an additional flag using bitwise OR.
meetingDays = meetingDays | Days2.Friday;
Console.WriteLine("Meeting days are {0}", meetingDays);
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 11
是的 - MethodBase.Attributes例如,看一个成员是公共的,静态的等等.
FileAccess并且FileOptions也是基于文件的示例.
如果您打开反射器,找到FlagsAttribute然后点击"分析"(Ctrl-R)并展开"使用者",您将看到使用它的大量类型.虽然需要一段时间:)
您将看到的最常见[Flags]枚举之一是正则表达式选项枚举.这是一个例子:
Regex rxInsensitive = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
更多信息:http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx
几年前我写了一篇关于在.Net中使用位枚举的教程,也许这会有所帮助:http: //www.johnsample.com/articles/BitwiseEnums.aspx