使用しているメソッドで範囲を使用していますが、マネージャーから整数の代わりに列挙型を使用するように求められたため、次のようになりました。
public virtual int MyMethod(int value)
{
int result = 0;
if (value >= 0 && value <= 3333)
{
result = 1;
}
else if (value >= 3334 && value <= 6666)
{
result = 2;
}
else if (value >= 6667 && value <= 10000)
{
result = 3;
}
return result;
}
私は次のようなもので作業します:
public virtual int MyMethod(int value)
{
int result = 0;
if (value >= (int)EnumClass.Range.Low.Min && value <= (int)EnumClass.Range.Low.Max)
{
result = 1;
}
else if (value >= (int)EnumClass.Range.Medium.Min && value <= (int)EnumClass.Range.Medium.Max)
{
result = 2;
}
else if (value >= (int)EnumClass.Range.High.Min && value <= (int)EnumClass.Range.High.Max)
{
result = 3;
}
return result;
}
EnumClassには他のメソッド(つまり、Rating、Priority)用の他の列挙型があるので、Rangeが独自の変数のままであるようにしたかったのです。
public static enum Rating
{
Low = 1,
Medium,
High
};
public static enum[] Range =
{
enum Low
{
Min = 0,
Max = 3333
},
enum Medium
{
Min = 3334,
Max = 6666
},
enum High
{
Min = 6667,
Max = 10000
}
};
その配列の初期化中にエラーが発生しますが、これを実現する他の方法はありますか?可能であれば、3つの列挙型にすることは避けたいと思いますが、やむを得ない場合は、次のように処理します。
public static enum Rating
{
Low = 1,
Medium,
High
};
public static enum RangeLow
{
Min = 0,
Max = 3333
};
public static enum RangeMedium
{
Min = 3334,
Max = 6666
};
public static enum RangeHigh
{
Min = 6667,
Max = 10000
};