0

如何enum在 ac# 应用程序中将 2 个值关联到单个类型值?例如,我有这样的enum类型:

public enum person 
{ 
    soccerPlayer, 
    tennisPlayer, 
    athlete, 
    coach
}

足球运动员和网球运动员是运动员,但教练不是运动员。

如果我以一个人为例,如下所示:

person p = person.soccerPlayer;

我该如何做这个测试?

if (p == person.athlete)
4

1 回答 1

2

在这种特殊情况下,您最好通过函数检查来查看该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
  }      
}
于 2013-03-10T01:38:14.690 回答