我可以制作动态切换语句,即如果我有一个包含1,2,3,4,5的列表而不是手动执行大小写1:,大小写2:等我可以使用for循环来完成,如下所示?
代码不起作用。 Visual Studio给出一个错误,说case必须是引用的标签,我是初学者。
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 :(得分:2)
似乎你只是想要:
waitingList[waitingList.Count].Show = showList[selectedShow];
答案 1 :(得分:1)
Switch语句用于为不同的值进行不同的操作。那就是&#34;案例&#34;选择要继续的值。在您的示例中,只对列表中的任何值实施一个操作。所以,你不需要申请&#34;如果&#34;用于检查selectedShow等于列表中某个项目的条件的语句。在C#中迭代列表的首选方法是foreach操作。例如:
foreach (var i in showList)
{
if(i == selectedShow)
{
waitingList.Last().Show = i;
break;
}
}
我还替换了unsafe waitingList。[waitingList.Count]以获得更清晰的waitingList.Last()方法(您可能需要使用System.Linq添加;在文件的顶部)
答案 2 :(得分: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;
}
答案 3 :(得分: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;
}
}
毫无意义,对于i的每个值,您将执行大小写条件:
代替:
for (int i = 0; i < showList.Count; i+=1)
{
waitingList[waitingList.Count].Show = showList[i];
}
答案 4 :(得分: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;
}
}
答案 5 :(得分:0)
使用forloop和if语句应该有效。我可以使用for循环遍历列表,如果所选的show(用户在终端中选择)是当前迭代的节目。然后我可以在waitingList中引用该节目。
Data.HashMap