c#中的调查枚举

时间:2012-05-07 07:03:32

标签: c# enums

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

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

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

4 个答案:

答案 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
}