[英]c# switch statement question
我會追逐。 關於開關,我有兩個簡單的問題,但我無法弄清楚。
第一:
在c#switch語句中,case語句是否必須是連續的(帶有int)?
例如:
switch(someInt)
{
case 1
// some code
case 2
// some code
case 3
// some code
}
或者可以執行以下操作:
switch(someInt)
{
case 1
case 3
case 5
}
我知道通常將if-else語句用於諸如此類的事情,但我只是想知道它是否可行。
另外,在案例陳述中使用實際數字是否被視為魔術數字? 還是更好的做法是聲明要在case語句中使用的常量?
謝謝!
編輯:
感謝大家的回應! 我很感激。
它們可以按照您想要的任何順序排列。 不,使用實際數字並不總是不好。 但不是魔術數字。 如果要比較int
,請使用數字,例如
switch (numberOfItems)
{
case 0:
break;
case 1:
break;
default:
break;
}
(當然,這只是一個例子,我無法想象在現實世界中看到此代碼)
他們不必是連續的。 盡管我這樣做只是為了清楚起見。
順序無關緊要,編譯器將為您完成該工作。
我更喜歡使用枚舉或const int來提供數字的含義,尤其是當其他人正在維護它時。
case語句的值絕對不需要連續。
您也不必僅使用整數值。 字符串也一樣。
如果您擔心魔術數字,最好的選擇是創建一個枚舉。 它將傳達那些魔術數字的含義。 否則,享受它並享受。
兩者都有可能。 語法是這樣的:(您很接近)
switch(someInt)
{
case 1:
// some code
break;
case 2:
// some code
break;
case 3:
// some code
break;
default:
// code for "else" case
break;
}
or is it possible to do something like the following:
switch(someInt)
{
case 1:
case 3:
case 5:
// some code
break;
}
注意冒號和break
秒。
至於魔術數字的使用,通常,我更喜歡將常量放在常量中,但是對於明顯的數字(例如檢查因子除數的最低數字為2),我例外。
作為一個小的優化,您可以根據實際/期望的頻率對案例值進行排序。 我還將添加一個“默認”情況,以便您可以輕松發現使用枚舉的位置並忘記了對其進行說明。 這是在常量上使用枚舉值的另一個原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.