当前位置:  开发笔记 > 编程语言 > 正文

按位或组合

如何解决《按位或组合》经验,为你挑选了1个好方法。

这是最常用的Regex函数之一

Regex.IsMatch("Test text for regex test.", "(test)",
RegexOptions.IgnoreCase | RegexOptions.Multiline);

你能解释一下Regex.IsMatch方法是如何工作的吗?我的意思是它如何处理按位OR RegexOptions参数?它如何定义方法参数?

谢谢你的回复!



1> Sean Bright..:

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]属性的位域的枚举,所以在这种情况下它至少有点自我记录.否则,我不知所措.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有