簡體   English   中英

C#開關語句問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM