2015-04-06 76 views
-1

我的代码有问题,但我不确定在哪里。 我试图从枚举集合/类返回一个枚举值。 但是,当我尝试这样做,而不是返回值,它返回一个实际枚举值的数字。C# - 我将如何返回枚举而不是枚举存储的值?

E.G

thisisamaptype = 5; 

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

有没有办法从该方法提供的关联号码获取枚举值?

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)); 
     } 
    } 
+0

你必须在'rnd.Next(1,N)中的错误'赢'** **永远**导致您的枚举的第一个值返回。你有没有给你的枚举赋值,还是这种想要的行为? –

+0

另一方面,你应该让你的Random变量为静态的。 – Rogala

+0

别担心,我只是为了举例而做。 – king

回答

0

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

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

+0

哦,我明白了!我想我已经解决了这个问题。这是在该方法之前的一些过程。谢谢! – king

+0

请不要投票并离开帖子。堆栈溢出对我来说是必不可少的,如果我需要帮助和人们继续投票下来导致我被禁止的随机帖子, – king

+0

请标记为回答...谢谢! – Shar1er80