C# 如何根据条件使用管道添加多个枚举值?

C# 如何根据条件使用管道添加多个枚举值?,c#,enums,C#,Enums,我试图根据条件向变量添加多个枚举值。例如,我有这样的东西: SharedAccessBlobPermissions t = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Read; 如果用户在UI上选择了其他可用的枚举值,我想添加它们。但看起来我们只能在一行上写,以后不能添加多个值 你知道我怎样才能做到这一点吗 [更新] 根据答案,这是我写的 var t= new SharedAccessBlobPermissi

我试图根据条件向变量添加多个枚举值。例如,我有这样的东西:

SharedAccessBlobPermissions t = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Read;
如果用户在UI上选择了其他可用的枚举值,我想添加它们。但看起来我们只能在一行上写,以后不能添加多个值

你知道我怎样才能做到这一点吗

[更新] 根据答案,这是我写的

var t= new SharedAccessBlobPermissions();
        if (isAllowRead)
        {
            t = SharedAccessBlobPermissions.Read;
        }
        if (isAllowWrite)
        {
            t |= SharedAccessBlobPermissions.Write;
        }

通过使用当前值按位oring,可以继续向位掩码添加更多值:

t |= SharedAccessBlobPermissions.AnotherOption

通过使用当前值按位oring,可以继续向位掩码添加更多值:

t |= SharedAccessBlobPermissions.AnotherOption

如果已使用[Flags]属性声明SharedAccessBlobPermissions 你可以做一些集合算术。如果最初

  SharedAccessBlobPermissions t = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Read;
补充:

  // Add SharedAccessBlobPermissions.Delete and SharedAccessBlobPermissions.Clear 
  t |= SharedAccessBlobPermissions.Delete | SharedAccessBlobPermissions.Clear;
减法:

  // Remove SharedAccessBlobPermissions.Delete
  t = (t | SharedAccessBlobPermissions.Delete) ^ SharedAccessBlobPermissions.Delete;

如果已使用[Flags]属性声明SharedAccessBlobPermissions 你可以做一些集合算术。如果最初

  SharedAccessBlobPermissions t = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Read;
补充:

  // Add SharedAccessBlobPermissions.Delete and SharedAccessBlobPermissions.Clear 
  t |= SharedAccessBlobPermissions.Delete | SharedAccessBlobPermissions.Clear;
减法:

  // Remove SharedAccessBlobPermissions.Delete
  t = (t | SharedAccessBlobPermissions.Delete) ^ SharedAccessBlobPermissions.Delete;
您需要使用属性。 请参见以下示例:

[Flags]
enum DaysOfWeek
{
   Sunday = 1,
   Monday = 2,
   Tuesday = 4,
   Wednesday = 8,
   Thursday = 16,
   Friday = 32,
   Saturday = 64
}

public void RunOnDays(DaysOfWeek days)
{
   bool isTuesdaySet = (days & DaysOfWeek.Tuesday) == DaysOfWeek.Tuesday;

   if (isTuesdaySet)
      //...
   // Do your work here..
}

public void CallMethodWithTuesdayAndThursday()
{
    this.RunOnDays(DaysOfWeek.Tuesday | DaysOfWeek.Thursday);
}
我建议你阅读以下内容

是另一个有用的答案

您需要使用属性。 请参见以下示例:

[Flags]
enum DaysOfWeek
{
   Sunday = 1,
   Monday = 2,
   Tuesday = 4,
   Wednesday = 8,
   Thursday = 16,
   Friday = 32,
   Saturday = 64
}

public void RunOnDays(DaysOfWeek days)
{
   bool isTuesdaySet = (days & DaysOfWeek.Tuesday) == DaysOfWeek.Tuesday;

   if (isTuesdaySet)
      //...
   // Do your work here..
}

public void CallMethodWithTuesdayAndThursday()
{
    this.RunOnDays(DaysOfWeek.Tuesday | DaysOfWeek.Thursday);
}
我建议你阅读以下内容


是另一个有用的答案

只需添加更多值,通过
|
连接它们,就可以将其拆分为多行,直到以
结束为止只需添加更多值,通过
|
将它们连接起来,就可以将其拆分为多行,直到以
结束为止