私は2つのフラグを持っています:
[Flags]
enum Flags
{
A = 1,
B = 2
};
私はそれらを次のように設定しました:
Mode = Flags.A | Flags.B; // default value
for(int i = 0; i < args.Length; i++) {
switch(args[i])
{
case "--a":
{
if ((Mode & Flags.A) == Flags.A && (Mode & Flags.B) == Flags.B)
// both, default assume
{
Mode = Flags.A; // only A
}
else
{
Mode |= Flags.A; // append A
}
break;
}
case "--b":
{
if ((Mode & Flags.A) == Flags.A && (Mode & Flags.B) == Mode.B)
{
Mode = Flags.B;
}
else
{
Mode |= Flags.B;
}
break;
}
} }
後で次のように使用します。
if((Mode & Flags.A) == Flags.A)
{
//
}
if((Mode & Flags.B) == Flags.B)
{
//
}
メジャー予約: 両方のフラグが設定される場合があります。または、1 つだけ、この場合、コードの一部のみが実行されます。
私のコードは良いですか?フラグを設定する最良の方法は何ですか?
Upd : これは最初よりも醜くありませんか?どう思いますか?
Mode = 0; // default value now is empty
for(int i = 0; i < args.Length; i++) {
switch(args[i])
{
case "--a":
{
Mode |= Flags.A;
break;
}
case "--b":
{
Mode |= Flags.B;
break;
}
} }
if(Mode == 0)
{
Mode = Flags.A | Flags.B; // if no parameters are given, setup both flags
}