【问题标题】:regular expression using bitwise operator for setting options使用按位运算符设置选项的正则表达式
【发布时间】:2013-01-16 07:46:09
【问题描述】:

http://msdn.microsoft.com/en-us/library/yd1hzczs.aspx

指定选项

options 参数是 RegexOptions 枚举值的按位或组合。

RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace;

这是什么意思?为什么使用按位运算符?例如,而不是使用数组有什么好处?

【问题讨论】:

  • 您的意思是他们为什么选择使用按位运算符指定选项?这是将标志传递给函数的一种相当常见的方式,并且可以节省将数组传递给函数的开销,因为底层类型将是 unsigned int/char。假设 RegexOptions.IgnoreCase 为 1,RegexOptions.IgnorePatternWhitespace 为 2,则 options 参数为 1 | 2 = 3。然后您可以执行options & RegexOptions.IgnoreCase 来查看用户是否想要该选项。它只是比数组快。
  • 它们是标志。 Read
  • 它是轻量级的(用单个整数实现,而不是布尔数组)。把整数想象成一个位数组,你会看到你有一个包含 32 或 64 个布尔值的数组。

标签: c# regex options


【解决方案1】:

这实际上是枚举标志。每个枚举条目都与一个数字相关联,并使用按位运算符对每个枚举名称后面的数字进行实际操作。

更多信息请参见:What does the [Flags] Enum Attribute mean in C#?

【讨论】:

  • 我还会查看| 运算符上的MSDN Article,因为它说明它既可以用作逻辑OR 运算符,也可以用作位运算符。
猜你喜欢
  • 2012-10-30
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多