C# – 枚举多选以及如何判断

枚举标志允许您在枚举变量/参数中放置多个值。这是必须传递大量布尔值的不错选择。您可以通过按位 OR 将它们组合在一起来设置多个值。下面是一个示例:

要使枚举具有多个值,请执行以下操作:

  • 将 [标志] 属性添加到枚举类型。
  • 将值设置为 2 的幂。
  • (可选)添加 None=0 表示未设置任何值。
[Flags]
public enum JsonOptions
{
	None = 0,
	PrettyPrint = 1,
	UseEnumStrings = 2,
	IgnoreNulls = 4,
	CaseInsensitive = 8
}


JsonOptions options = JsonOptions.PrettyPrint | JsonOptions.IgnoreNulls;

必须使用 2 的幂的原因是枚举值是枚举二进制表示中的位位置。如果您查看文字二进制值,这更有意义:

[Flags]
public enum JsonOptions
{
    None = 0b0000, //0
    PrettyPrint = 0b0001, //1
    UseEnumStrings = 0b0010, //2
    IgnoreNulls = 0b0100, //4
    CaseInsensitive = 0b1000  //8
}

由于每个值都是一个位位置,因此将它们按位 OR 组合在一起允许您一次存储多个值。例如:JsonOptions.PrettyPrint |JsonOptions.IgnoreNulls 是这个二进制操作:
 

0001
|
0100
-----
0101

使用 HasFlag() 检查是否设置了值

检查枚举是否设置了特定值的最简单方法是使用 HasFlag():

JsonOptions options = JsonOptions.PrettyPrint | JsonOptions.IgnoreNulls;

if (options.HasFlag(JsonOptions.PrettyPrint))
{
    Console.WriteLine("Has PrettyPrint!");
}

if (options.HasFlag(JsonOptions.IgnoreNulls))
{
    Console.WriteLine("Has IgnoreNulls!");
}

输出:

Has PrettyPrint!
Has IgnoreNulls!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值