public enum RoleType
{
Supervisor,
Administrator,
User,
UserPhone,
Operator
}
我的项目中有一个枚举,我将把一个变量与这些枚举项进行比较!
如何将变量与这些项目进行比较?
或使用 switch 语句:
switch(item)
{
case RoleType.Supervisor:
break;
case RoleType.Administrator:
break;
case RoleType.User:
break;
case RoleType.UserPhone:
break;
case RoleType.Operator:
break;
default:
throw new ArgumentOutOfRangeException();
}
例如:
if(item == RoleType.Supervisor)
{
}
else if(item == RoleType.Administrator)
{
}
else
{
}
我想我明白你在问什么。您正在寻找一种遍历枚举值的方法。您可以使用返回枚举值的 int 表示形式的 Enum.GetValues() 来执行此操作。
foreach (int i in Enum.GetValues(typeof(RoleType)))
{
//you can get the enum by casting the int to the enum type
RoleType rtEnum = (RoleType)i;
}
如果值不是互斥的(即一个用户可以担任多个角色),您可以使用Flags
属性装饰枚举并使用运算符或HasFlag()
方法对其执行按位运算。
[Flags]
public enum RoleType
{
Supervisor = 1,
Administrator = 2,
User = 4,
UserPhone = 8,
Operator = 16
}
// assume there is a user class with a collection of roles which have role types
var roles = (RoleType)user.Roles.Sum( o => o.RoleType );
if( roles.HasFlag( RoleType.User ) ){
// do something
}