2014-05-12 352 views
-2

檢查Enum是否包含字符串?

Enum eNUM 
{ 
    one,Two,Three 
} 

我有一個UserDefinedString。例如:Four 我想檢查用戶定義的字符串是否存在於eNUm。我

eNUM _num; 
if (Enum.TryParse<eNUM>("UserDefinedString", out _num)) 
{ 
    //do some thing 
} 

試過我也試過:

if (Enum.IsDefined(typeof(eNUM), "UserDefinedString")) 

這不是爲我工作

+2

'Enum.IsDefined'將返回如果屬實檢查你的關鍵字符串在Enum中退出。 「不工作」是什麼意思? –

+2

你是什麼意思「這不適合我」?你有錯誤嗎?結果是否與您預期的不同?如果是這樣,什麼? – Rik

回答

0

第一個示例:

if (Enum.TryParse<eNUM>("Four", out _num)) 
{ 
    //do some thing 
} 
else 
{ 
    // invalid enum value 
} 

Four調用此,你會得到else分支。撥打電話Two即可使用。

如果您想忽略套管,您可以將TryParse的第二個參數設置爲true

+0

感謝回答..... – Singh

+0

@Singh:不客氣。既然你是新來的,如果答案最好回答你的問題,不要忘記標記答案。 –

1

確保試圖解析時,它是一個精確匹配。您可以比較之前使生活通過強制的情況下更容易,如果你知道你的枚舉只包含小寫值,例如:

Enum eNUM 
{ 
    one, two, three ... 
} 

... 

eNUM num; 
string findThisValue = "OnE"; // Odd casing... 
if (Enum.TryParse(findThisValue.ToLower(), out num)) 
{ 
    // Do something with num 
} 
+0

事實上,最好使枚舉全部大寫或小寫,然後在TryParse之前使用ToLower()。 – Murphy

+0

非常感謝....知道了 – Singh

1

嘗試

Enum.GetNames(typeof(eNUM)); 

,這將讓你在枚舉作爲字符串的所有值,那麼你可以使用LINQ功能像包含或任何

相關問題