enum
この特定のケースでは、値がアスリートであるかどうかを確認する関数チェックを行うことで、より適切にサービスを提供できます。
static bool IsAthlete(person p) {
switch (p) {
case person.soccerPlayer:
case person.tennisPlayer:
case person.athlete:
return true;
default:
return false;
}
}
全体的には、タイプがここでうまく機能するとは思いませんenum
。Anenum
は通常、相互に排他的な値 (A または B であるが両方ではない) を表すため、またはビット フラグの状況で使用されます。ここでビットフラグを操作して動作させることもできますが、それは最善の方法ではないように感じます。
これは、本格的なタイプよりも適していると思われるタイプの状況です。
class Person {
public bool IsAthlete { get; private set; }
public bool IsSoccerPlayer { get; private set; }
public bool IsTennisPlayer { get; private set; }
public static readonly TennisPlayer = new Person {
IsTennisPlayer = true,
IsAthelete = true
}
public static readonly SoccerPlayer = new Person {
IsSoccerPlayer = true,
IsAthelete = true
}
}