嗨,我有一個簡單的問題,但一直在困擾着我一段時間。使用switch語句常量或枚舉? (哪個更好)? C#
問:
當在C#中使用switch語句,是它認爲更好的做法是使用enums
在constants
反之亦然?或者這是一個偏好問題?我這樣問是因爲很多人似乎都喜歡使用enums
,但是當您打開int
值時,即使您指定了enum
的類型,也必須將enum
中包含的每個值都轉換爲int
。
代碼段:
class Program
{
enum UserChoices
{
MenuChoiceOne = 1,
MenuChoiceTwo,
MenuChoiceThree,
MenuChoiceFour,
MenuChoiceFive
}
static void Main()
{
Console.Write("Enter your choice: ");
int someNum = int.Parse(Console.ReadLine());
switch (someNum)
{
case (int)UserChoices.MenuChoiceOne:
Console.WriteLine("You picked the first choice!");
break;
// etc. etc.
}
}
}
有一些方法可以創建enum
的一個實例,只投全enum
爲int?
謝謝!
謝謝!我現在明白了。 – Alex 2009-11-25 19:18:12
這也是我的方法。然而,有一點需要考慮的是你的int值來自哪裏。在這種情況下,您正在從控制檯讀取用戶輸入,因此用戶可能會輸入與UserChoices枚舉中的任何值都不相對應的值。在這種情況下,我相信演員會拋出一個異常,這可能是也可能不是你想要的行爲。如果您不確定您擁有的值是否爲有效的枚舉值,則可以使用Enum.IsDefined函數來查找。 – 2009-11-25 20:36:10
不,如果您將一個int轉換爲不存在的值,則不會引發異常(嘗試它)。您應該使用「default:」情況來處理這種情況。雖然int.Parse可以拋出,但這是在原始代碼中 - 我沒有改變它。 – 2009-11-25 20:49:20