3

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

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

更新:

我有一个数据库表,我需要从该表创建EnumId我需要为某些Id's 分配相同的名称。所以我需要这种实现。通过传递Idas 值来获取Enum名称。

4

4 回答 4

6

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

但是,它们的值可以是重复的,因此您可以做相反的事情:

A = 1,
B = 2,
C = 2,
D = 1
于 2013-07-30T06:09:22.727 回答
0

enum如果您使用的唯一方面是Enum.GetName函数,将 anint转换为 a string,那么您不需要 an 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.

于 2013-07-30T08:16:24.417 回答
0

正如@Lasse所说,这是不可能的。但是对于您的工作,您可以创建自己的custom type

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

}
于 2013-07-30T06:15:32.387 回答
0

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

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

loc应该是什么?1、2 还是 3?但是,您可以分配别名:一个值的多个名称:

  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)

于 2013-07-30T06:18:57.563 回答