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名称。

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

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

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

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