【问题标题】:C# - How would I return an enum instead of the enums stored value?C# - 我将如何返回枚举而不是枚举存储值?
【发布时间】:2015-04-06 18:36:15
【问题描述】:

我的代码有问题,但我不确定在哪里。 我正在尝试从枚举集合/类中返回一个枚举值。 但是,当我尝试这样做时,它不是返回值,而是返回一个实际枚举值的数字。

E.G

thisisamaptype = 5;

将返回“5”而不是其自身的枚举名称。

有没有办法从方法提供的关联数中获取 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)); 
        }
    }

【问题讨论】:

  • 你有一个错误,rnd.Next(1, n) 不会永远导致你的枚举的第一个值被返回。您是否为枚举分配了值,或者这是期望的行为?
  • 另一方面,您确实应该将随机变量设为静态。
  • 别担心,我只是为了举例。

标签: c# random enums typeof


【解决方案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();

输出:

【讨论】:

  • 哦,我明白了!我想我已经解决了这个问题。这与该方法之前的一些过程有关。谢谢!
  • 请不要投反对票并离开帖子。如果我需要帮助并且人们不断投票否决导致我被禁止的随机帖子,Stack Overflow 对我来说是必不可少的,
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 2011-12-16
    • 1970-01-01
    相关资源
    最近更新 更多