获取具有特定整数值c的所有Enum值

时间:2015-04-29 05:44:39

标签: c#

如何在此示例中获取具有整数值的枚举的所有值

enum colour { red = 1, green = 1, blue = 1, yellow = 2, cyan = 2, purple = 2 }

我的意思是,通过输入1,我想要输出红色,绿色,蓝色

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 ...