在这种特殊情况下,您最好通过函数检查来查看该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
}
}