public enum RoleType
{
Supervisor,
Administrator,
User,
UserPhone,
Operator
}
私のプロジェクトには列挙型がありますが、これらの列挙型変数と変数を比較します!調査の列挙体C#
どのように変数をこれらのアイテムと比較できますか?例えば
public enum RoleType
{
Supervisor,
Administrator,
User,
UserPhone,
Operator
}
私のプロジェクトには列挙型がありますが、これらの列挙型変数と変数を比較します!調査の列挙体C#
どのように変数をこれらのアイテムと比較できますか?例えば
を私は私はあなたが求めているものを手に入れると思います。列挙型の値を繰り返し処理する方法を探しています。 enum値の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;
}
:
if(item == RoleType.Supervisor)
{
}
else if(item == RoleType.Administrator)
{
}
else
{
}
このソリューションでは、列挙型の各項目を変数と比較する必要があります。列挙型の項目が多く、foreachやlambda式を使う方が良いとしましょう!しかし、私はどのように私はC# –
または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();
}
値(すなわち、ユーザが複数のロールであってもよい)相互に排他的ではない場合は、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
}
タンクでたくさんの列挙型のforeachを取ることができるか分からない。私はこのコードを探していた! :-) –
このコードがうまく機能していれば、それをあなたの質問に対する回答としてマークしてください。 – Atzoya