下面我将我尝试做的伪代码放在一起。我不完全确定如何用C#写这个。这样的事情是可能的,如果是这样的话我怎么能这样做。我想要做的是如果找到返回的值,则运行一个函数。
伪代码
string list = @"
This is a multiline statement
used for testing
"
foreach (var line in list)
{
switch (line)
{
case (line.Contains("multiline")):
Console.WriteLine("has A");
break;
case (line.Contains("testing")):
Console.WriteLine("has B");
break;
}
}
答案 0 :(得分:9)
这是不可能的。使用switch
语句,您只需检查给定对象的值。尝试使用if:
foreach (var line in list)
{
if (line.Contains("multiline"))
Console.WriteLine("has A");
else if (line.Contains("testing"))
Console.WriteLine("has B");
}
来自MSDN文档:
switch语句是一个选择开关的控制语句 从候选人名单中执行的部分。
case语句是编译时常量。
正确使用switch
语句可能是这样的:
int caseSwitch = /* get a int value*/;
switch (caseSwitch)
{
case 1:
Console.WriteLine("Case 1");
break;
case 2:
Console.WriteLine("Case 2");
break;
default:
Console.WriteLine("Default case");
break;
}
答案 1 :(得分:1)
首先,您没有可以迭代的列表。你只需要一个字符串。你应该拆分你的字符串
string s = @"
This is a multiline statement
used for testing
";
string[] lines = s.Split(new string[] { "\r\n" }, StringSplitOptions.None);
然后case语句根据常量case值进行分支。在这种情况下,您无法执行条件表达式。因此,您需要使用一系列if-else语句
if (condition1) {
...
} else if (condition2) {
...
} else if (condition3) {
...
} else {
...
}