2012-04-18 141 views
2

可能重複:
How do I Convert a string to an enum in C#?
Enums returning int value如何將字符串轉換爲枚舉值爲整數?

我必須聲明枚舉: -

public enum Car 
     { 
      SELECT = 0, 
      AUDI = 1, 
      NISSAN = 2, 
      HONDA = 3, 
      LINCOLN = 4 
     } 

現在我需要枚舉的整型值,其中它匹配: -

private int GetCarType(string CarName) 
     { 
      foreach(var item in Enum.GetNames(typeof(Car)) 
      { 
       if (item.ToLower().Equals(CarName.ToLower())) 
        //return int value of Enum of matched item; ??????? 
      } 

結果預計: -

int i = GetCarType(CarName); //suppose CarName is AUDI, it should return 1; 
Console.write(i); 

Result :- 1 

我如何獲得枚舉值?更好的編碼實踐。

+2

注意你的腸衣。遵循C#約定。 http://msdn.microsoft.com/en-us/library/ms229045.aspx – 2012-04-18 17:01:28

+0

@Paul:我已經看到你鏈接的問題。我的並不重複。它與你所鏈接的不同。 – user1327064 2012-04-18 17:21:48

回答

6

如果要將字符串轉換爲枚舉,則應該使用Enum.Parse而不是迭代名稱。

然後就強制轉換爲整數:

var iAsInteger = (Int32)i; 
+0

你的意思是'串來枚舉'? – 2012-04-18 17:03:39

+0

是的,對不起,將修復完成 – 2012-04-18 17:04:03

3

只是投你的枚舉爲int喜歡

int i=(int)Car.Audi; 

這會給你1

int i=(int)Car.Select; 

這會給你0

+0

首先你必須匹配..我不知道什麼是CarName的價值.. – user1327064 2012-04-18 17:05:58

+0

@ user1327064你不知道嗎?我沒有得到你 – Devjosh 2012-04-18 17:07:06

+0

@DevJob:羅伯特哈維已經回答了我的問題。你的人不會適合.. – user1327064 2012-04-18 17:19:10

1
int i = (int) Enum.Parse(typeof(Car), "AUDI"); 
+0

是,3分鐘。我是一個緩慢的typer :-) – 2012-04-18 17:09:01

相關問題