public enum RoleType
{
Supervisor,
Administrator,
User,
UserPhone,
Operator
}
我的项目中有一个枚举,我要将变量与这些枚举项进行比较!
如何将变量与这些项目进行比较?
答案 0 :(得分:1)
或使用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();
}
答案 1 :(得分:0)
例如:
if(item == RoleType.Supervisor)
{
}
else if(item == RoleType.Administrator)
{
}
else
{
}
答案 2 :(得分:0)
我想我得到了你的要求。您正在寻找一种通过枚举值迭代的方法。你可以使用Enum.GetValues()来返回枚举值的int表示。
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;
}
答案 3 :(得分:0)
如果值不是互斥的(即用户可以在多个角色中),您可以使用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
}