.NET框架中位标志的实际用法

AJM*_*AJM 10 .net c# bitflags

正在研究如何通过使用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)并展开"使用者",您将看到使用它的大量类型.虽然需要一段时间:)


jws*_*ple 5

您将看到的最常见[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