如何在此示例中获取具有整数值的枚举的所有值
enum colour { red = 1, green = 1, blue = 1, yellow = 2, cyan = 2, purple = 2 }
我的意思是,通过输入1,我想要输出红色,绿色,蓝色
答案 0 :(得分:2)
嗯,首先我会强烈建议您不要这样做。
对于相同的值有多个名称是一个非常糟糕的主意,IMO。但是,您可以使用反射来执行此操作:
using System;
using System.Collections.Generic;
using System.Linq;
enum Color
{
Red = 1,
Green = 1,
Blue = 1,
Yellow = 2,
Cyan = 2,
Purple = 2
}
class Test
{
static void Main()
{
foreach (var name in GetColorNames(1))
{
Console.WriteLine(name);
}
}
static IEnumerable<string> GetColorNames(int value)
{
return Enum.GetNames(typeof(Color))
.Where(name => (int) Enum.Parse(typeof(Color), name) == value);
}
}
就个人而言,我会在枚举中使用单独的值,然后使用Lookup<int, Color>
或类似的东西。除了其他任何东西,有这样的东西会很困惑:
Color color = Color.Blue;
...然后在调试器或其他诊断程序中查看Red
...