如何为这样的不同值添加相同的Enum
名称?任何可能的实现?
public enum Location
{
A = 1,
A = 2,
A = 3,
B = 4,
B = 5
}
更新
我有一个db表,我需要从该表为Enum
创建Id
。我需要为某些Id
指定相同的名称。所以我需要这种实现。将Id
作为值传递以获取Enum
名称。
答案 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
。