2016-04-02 17 views
1

我可以製作一個動態切換語句,即如果我有一個包含1,2,3,4,5的列表,而不是手動執行case 1 :, case 2:etc我可以使用它一個for循環如下所示?對列表中的元素進行切換聲明

該代碼不起作用。 Visual Studio提供了一個錯誤,說案件必須是一個引用標籤,我是一個初學者。

switch (selectedShow) 
    { 
     //Show list is a list of type Shows 
     for (int i = 0; i < showList.Count; i+=1) 
     { 
      case i: 
      { 
      waitingList[waitingList.Count].Show = showList[selectedShow]; 
      break; 
      } 
     } 

    } 
+0

在我看來,擁有一個動態的case語句是沒有意義的,因爲你不知道在case塊中寫什麼。如果你確實知道要寫什麼,那麼無論如何你都不需要case語句。 – Rob

+0

我覺得字典最適合你的情況。 –

回答

1

它還挺看來你只是想:

waitingList[waitingList.Count].Show = showList[selectedShow]; 
0

如前所述,您不需要case語句。您可以編寫類似如下代碼:

//Show list is a list of type Shows 
for (int i = 0; i < showList.Count; i+=1) 
{ 
    waitingList[waitingList.Count].Show = showList[i]; 
    if (someBreakConditionFunction()) 
     break; 
} 
0

該代碼段在這裏:

//Show list is a list of type Shows 
     for (int i = 0; i < showList.Count; i+=1) 
     { 
      case i: 
      { 
      waitingList[waitingList.Count].Show = showList[i]; 
      break; 
      } 
     } 

是沒有意義的,因爲我的每一個值,你將執行的情況下條件:

代替請執行以下操作:

for (int i = 0; i < showList.Count; i+=1) 
    { 
     waitingList[waitingList.Count].Show = showList[i]; 
    } 
1

Switch語句用於針對不同的值進行不同的操作。那就是爲什麼「案例」選擇值繼續。在你的例子中,只有一個操作是針對你列表中的任何值實現的。因此,您不需要應用「if」語句來檢查selectedShow等於列表中的某個項目的情況。在C#中迭代列表的首選方法是foreach操作。例如:

foreach (var i in showList) 
     { 
      if(i == selectedShow) 
      { 
      waitingList.Last().Show = i; 
      break; 
      } 
     } 

我也取代不安全waitingList [waitingList.Count]爲更加清晰waitingList.Last()方法(您可能需要使用System.Linq的補充;在你的文件的頂部)

0
switch (selectedShow) 
{ 
    //Show list is a list of type Shows 
    for (int i = 0; i < showList.Count; i+=1) 
    { 
     waitingList[waitingList.Count].Show = showList[i]; 
     //Add some condition if you want to break the loop. 
     if(breakCondition) 
      break; 
    } 
} 
0

使用for循環和if語句應該工作。我可以使用每個循環遍歷列表,並且如果選定的節目(用戶在終端中選擇)是當前迭代節目。然後我可以在waitingList中引用該節目。

selectedShow = int.Parse(Console.ReadLine()); 
     //Show list is a list of type Shows 
     for (int i = 0; i <=showList.Count;) 
     { 
      if (selectedShow == i) 
      { 
       //Count starts from 1 not 0 
       waitingList[waitingList.Count-1].Show = showList[selectedShow]; 
       break; 
      } 
     } 
相關問題