如何Enum
为这样的不同值添加相同的名称?有什么可能的实现吗?
public enum Location
{
A = 1,
A = 2,
A = 3,
B = 4,
B = 5
}
更新:
我有一个数据库表,我需要从该表创建Enum
。Id
我需要为某些Id
's 分配相同的名称。所以我需要这种实现。通过传递Id
as 值来获取Enum
名称。
不,这是不可能的。枚举名称必须是唯一的。
但是,它们的值可以是重复的,因此您可以做相反的事情:
A = 1,
B = 2,
C = 2,
D = 1
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
.
正如@Lasse所说,这是不可能的。但是对于您的工作,您可以创建自己的custom type
。
public class customtype
{
public string Key { get; set; }
public List<int> values { get; set; }
}
这是不可能的; 解释很简单:想象一下代码:
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)