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);
}
我建议你阅读以下内容
是另一个有用的答案只需添加更多值,通过
|
连接它们,就可以将其拆分为多行,直到以结束为止代码>只需添加更多值,通过|
将它们连接起来,就可以将其拆分为多行,直到以结束为止代码>