0
public enum RoleType
{
    Supervisor,
    Administrator,
    User,
    UserPhone,
    Operator
}

我的项目中有一个枚举,我将把一个变量与这些枚举项进行比较!

如何将变量与这些项目进行比较?

4

4 回答 4

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();
        }
于 2012-05-07T07:36:39.750 回答
0

例如:

if(item == RoleType.Supervisor)
{
}
else if(item == RoleType.Administrator)
{
}
else
{
}
于 2012-05-07T07:20:29.043 回答
0

我想我明白你在问什么。您正在寻找一种遍历枚举值的方法。您可以使用返回枚举值的 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;
}
于 2012-05-07T07:44:40.820 回答
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
}
于 2012-05-07T07:44:42.803 回答