这是最常用的Regex函数之一
Regex.IsMatch("Test text for regex test.", "(test)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
你能解释一下Regex.IsMatch方法是如何工作的吗?我的意思是它如何处理按位OR RegexOptions参数?它如何定义方法参数?
谢谢你的回复!
RegexOptions
是一个[Flags]
应用了属性的枚举.这允许按位运算应用于各种值.
你也可以做类似的事情:
[Flags] enum MyOptions { UpperCase = 1, Reverse = 2, Trim = 4 } public static void DoTransform(MyOptions options) { if ((options & MyOptions.UpperCase) == MyOptions.UpperCase) { /* Do Upper case transform */ } if ((options & MyOptions.Reverse) == MyOptions.Reverse) { /* Do Reverse transform */ } /* etc, ... */ } DoTransform(MyOptions.UpperCase | MyOptions.Reverse);
我刚刚根据Frank的评论进行了一些挖掘,他是正确的,无论有没有[Flags]
属性,上面的代码都会编译运行.
关于[Flags]
属性没有做什么还有其他评论,除了"它影响ToString()
结果",没有人似乎知道或想要解释它做了什么.在我写的代码中,我装饰了我打算用作[Flags]
属性的位域的枚举,所以在这种情况下它至少有点自我记录.否则,我不知所措.