C#具有多个值的相同枚举名称

时间:2013-07-30 06:07:32

标签: c# enums

如何为这样的不同值添加相同的Enum名称?任何可能的实现?

public enum Location
{
   A = 1,
   A = 2,
   A = 3,
   B = 4,
   B = 5  
}

更新

我有一个db表,我需要从该表为Enum创建Id。我需要为某些Id指定相同的名称。所以我需要这种实现。将Id作为值传递以获取Enum名称。

4 个答案:

答案 0 :(得分:6)

不,这是不可能的。枚举名称必须是唯一的。

然而,他们的可能是重复的,所以你可以做相反的事情:

A = 1,
B = 2,
C = 2,
D = 1

答案 1 :(得分:0)

作为@Lasse说这是不可能的。但是对于你的工作,你可以自己创建custom type

public class customtype
{
    public string Key { get; set; }
    public List<int> values { get; set; } 

}

答案 2 :(得分:0)

这是不可能的;解释很简单:想象代码:

  int loc = (int) (Location.A);

这应该是什么? 1,2或3?但是,您可以指定别名:many 一个值的名称:

  public enum Location
  {
   A = 1,
   B = 1,
   C = 1,
   D = 2,
   E = 2,
   F = 3 
  }

如果你从int转换回enum

   Location loc = (Location) 2; // <- Location.D

这将是第一个具有相应int值的枚举值 (案例中的Location.D)

答案 3 :(得分:0)

如果您使用的enum的唯一方面是Enum.GetName功能,要将int翻译成string,那么您不需要enum - 您只需要正确初始化Dictionary<int,string>,例如

public static Dictionary<int,string> Location = new Dictionary<int,string>
{
  {1,"A"},
  {2,"A"},
  {3,"A"},
  {4,"B"},
  {5,"B"}
}

现在,您只需访问Location[Id],而不是使用GetName