Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 位标志始终包含0值_C#_Enums_Bitflags - Fatal编程技术网

C# 位标志始终包含0值

C# 位标志始终包含0值,c#,enums,bitflags,C#,Enums,Bitflags,所以我是通过这个密码来的: [Flags] public enum Options { NA = 0, OptionA = 1, OptionB = 2, OptionC = 4 } 现在,从技术上讲,“NA”是无效的,如果用户不想选择任何选项,他们就不会选择任何选项,它将保存为可为null的int。没有“None”选项。然而,每当用户选择选项A-C时,NA也总是会被添加。如果我更改了NA=1,然后更改了OptionC=8,则一切正常。这一部分是有道理的。但是,

所以我是通过这个密码来的:

[Flags]
public enum Options
{
    NA = 0,
    OptionA = 1,
    OptionB = 2,
    OptionC = 4
}
现在,从技术上讲,“NA”是无效的,如果用户不想选择任何选项,他们就不会选择任何选项,它将保存为可为null的int。没有“None”选项。然而,每当用户选择选项A-C时,NA也总是会被添加。如果我更改了NA=1,然后更改了OptionC=8,则一切正常。这一部分是有道理的。但是,如果
NA=0
,为什么NA总是包含在用户的选项列表中

编辑:


要清除某些内容,NA是独占的,但如果我在何处选择OptionB,那么当我查看所选选项时,它将显示我选择的NA和OptionB。

当您在枚举上添加
标志作为属性,并且值为0时,如果您使用
&
筛选值,它将始终包含在内


这是因为所有必需的位(在这种情况下没有)都始终设置。

当您在枚举上添加
标志作为属性,并且值为0时,如果您使用
&
筛选出值,它将始终包括在内


这是因为所有必需的位(在这种情况下为无)总是被设置的。

如果要使用带有
标志的枚举,那么只有当您有一个排除所有其他选项(例如
none
)的选项时,才使用值0。然后用以下方法进行测试:

if (myOptions == Options.Na)
使用以下各项进行测试:

if ((myOptions & Options.Na) == Options.Na)
当然,将始终返回true


现在名称
Na
表明它排除了所有其他选项,那么问题出在哪里呢?

如果要使用带有
Flags
属性的枚举,那么只有在具有排除所有其他选项(例如
None
)的选项时才使用值0。然后用以下方法进行测试:

if (myOptions == Options.Na)
使用以下各项进行测试:

if ((myOptions & Options.Na) == Options.Na)
当然,将始终返回true


现在名称
Na
表明它排除了所有其他选项,那么问题出在哪里?

您所说的“Na也总是会被添加”是什么意思?在什么意义上?@JLRishe:我猜OP是在做类似于
myOpt&Options.NA==Options.NA的事情,当然,这永远都是真的。这就是为什么一开始就测试它是没有意义的。如果您想测试
Options.NA
,那么您只需要
myOpt==Options.NA
。您所说的“NA也总是会被添加”是什么意思?在什么意义上?@JLRishe:我猜OP是在做类似于
myOpt&Options.NA==Options.NA的事情,当然,这永远都是真的。这就是为什么一开始就测试它是没有意义的。如果您想测试
Options.NA
,那么只需要
myOpt==Options.NA