C# - 如何返回枚举而不是枚举存储值?

时间:2015-04-06 18:36:15

标签: c# random enums typeof

我的代码有问题,但我不知道在哪里。 我试图从枚举集合/类中返回枚举值。 但是,当我尝试这样做时,它不返回值,而是返回一些实际的枚举值。

E.G

thisisamaptype = 5;

将返回“5”而不是Enum名称为自己。

有没有办法从方法提供的相关数字中获取Enum值?

    Random rnd = new Random();
    public static MapTypes GetMapType(string Type)
    {
        switch (Type.ToLower())
        {
            default:
            case "default":
                return (MapTypes)(rnd.Next(1,Enum.GetNames(typeof(MapTypes)).Length)); 
        }
    }

2 个答案:

答案 0 :(得分:1)

你的代码对我有用,所以我很困惑。

// Used my own enums
public enum MapTypes
{
    One, Two, Three, Four, Five
}

// I had to make this static since it's being used in a static method
static Random rnd = new Random();
public static MapTypes GetMapType(string Type)
{
    switch (Type.ToLower())
    {
        default:
        case "default":
            // Changed first parameter of Next to 0 to include the first enum in the randomization
            return (MapTypes)(rnd.Next(0, Enum.GetNames(typeof(MapTypes)).Length));
            break;
    }
}

在控制台应用程序中使用您的代码:

MapTypes myMapType = GetMapType("default");
Console.WriteLine(myMapType);

Console.WriteLine("Done");
Console.ReadLine();

输出:

enter image description here

答案 1 :(得分:0)

假设我理解正确,你的方法返回枚举类型,所以使用方法返回的值,你可以使用.ToString()输出“thisisamaptype”