C#具有多个值的相同枚举名称
本文关键字:枚举 | 更新日期: 2023-09-27 18:25:30
如何为这样的不同值添加相同的Enum
名称?对此有任何可能的实施方案吗?
public enum Location
{
A = 1,
A = 2,
A = 3,
B = 4,
B = 5
}
更新:
我有一个数据库表,我需要从该表为Id
创建Enum
。我需要为一些Id
分配相同的名称。所以我需要这样的实现。通过传递Id
作为值来获得Enum
名称。
不,这是不可能的。枚举名称必须是唯一的。
然而,它们的值可能是重复的,所以你可以做相反的事情:
A = 1,
B = 2,
C = 2,
D = 1
正如@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)
如果您使用的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
。