2015-04-06 68 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