首页 / 知识
关于.net:如何在C#中比较标志?
2023-04-13 23:36:00

How to Compare Flags in C#?我下面有一个标志枚举。
我无法使if语句评估为true。
我如何才能做到这一点? 在.NET 4中,有一个新方法Enum.HasFlag。这使您可以编写:
IMO更具可读性。 .NET源表明这与接受的答案具有相同的逻辑:
对于那些无法想象被接受的解决方案正在发生什么的人
然后,在if语句中,比较的左侧是
以及完整的if语句(如果在
@ phil-devaney 请注意,除了最简单的情况外,与手动编写代码相比,Enum.HasFlag会带来严重的性能损失。考虑以下代码:
HasFlags扩展方法经过1000万次迭代,耗时长达4793毫秒,而标准按位实现的耗时为27毫秒。 我设置了一个扩展方法来做到这一点:相关问题。 基本上:
然后,您可以执行以下操作:
顺便说一下,我用于枚举的约定对于标准是单数,对于标志是复数。这样,您就可以从枚举名称中知道它是否可以容纳多个值。 另一条建议...永远不要对值为" 0"的标志进行标准的二进制检查。您对此标志的检查将始终为true。
如果对FullInfo二进制检查输入参数-您将得到:
bPRez将始终为true,并且ANYTHING&0 always == 0。 相反,您应该只检查输入值是否为0:
关于编辑。您无法实现。我建议您将所需的内容包装到另一个类(或扩展方法)中,以更接近所需的语法。 即
对于位运算,您需要使用按位运算符。 这应该可以解决问题:
编辑:修复了我的if支票-我重新使用了C / C ++的方式(感谢Ryan Farley指出了这一点) 尝试这个:
基本上,您的代码在询问是否设置两个标志都与设置一个标志相同,这显然是错误的。如果上面的代码被置位,则上面的代码将仅保留Flag1的位置,然后将该结果与Flag1进行比较。 即使没有[Flags],您也可以使用这样的内容
或者您有一个零值枚举
|
最新内容
相关内容
linux循环语句命令?
linux循环语句命令?,地方,增长,数字,语句,流程,名称,工具,代码,数据,条件,Linux入门系列——awk命令详解1、其中command是真正的awk命令,-F表示如何在linux编译命令?
如何在linux编译命令?,代码,工具,基础,环境,百度,源程序,语言,文件,终端,编译器,Linux能直接编译C语言吗?1、在Linux下面,如果要编译一个C语言嵌入式linux命令语句?
嵌入式linux命令语句?,系统,环境,基础,网络,软件,基础知识,服务,设备,管理,嵌入式,嵌入式linux系统开发详解_嵌入式linux系统介绍嵌入式LinuxPython 炫技操作:条件语句的七种写
Python 炫技操作:条件语句的七种写法,代码,培训,工程,公共,写法,语法,例子,发烧友,操作,语句,有的人说Python入门容易,但是精通难的语言,这点我如何在Python中定义类方法和修改类
如何在Python中定义类方法和修改类属性?,代码,方法,培训,对象,实例,定义,结果,示例,赋值,属性,Python中的类还可定义使用@classmethod修饰的类Python 条件语句
Python 条件语句,代码,语句,条件,名称,培训,信息,位置,结果,变量,括号,Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定如何在Linux系统中下载并安装Pytho
如何在Linux系统中下载并安装Python,系统,工作,培训,设计,软件,开发者,命令,版本,终端,上述,在众多开发者的眼中,Linux系统是专门为开发者所设如何在Linux中运行Python源文件
如何在Linux中运行Python源文件,系统,位置,工作,时间,地方,培训,程序,目录,源文件,文件,一。可执行的Python程序这部分内容只对Linux/Unix用For循环如何在Python中工作
For循环如何在Python中工作,工作,项目,代码,培训,流程,示例,序列,语句,语法,实际,Python的for循环通过遍历数组的序列来工作。从本质上讲,它在Python如何在后台自动解压各种压缩
Python如何在后台自动解压各种压缩文件?,代码,综合,工具,分析,检测,培训,文件,文件夹,模块,结尾,一、需求描述编写一个Python程序,每次下载压如何在 python 中打开文件?
如何在 python 中打开文件?,名称,单位,培训,模式,文件,表示,缓存,路径,函数,定义,使用内置函数open就可以打开文件。先来看下python中对openPython 枚举
Python 枚举,名称,代码,成员,培训,分析,定义,结果,别名,模块,上面,1.枚举的定义首先,定义枚举要导入enum模块。枚举定义用class关键字,继承Enum