如果找到字符串,则执行switch语句

时间:2015-12-17 19:32:32

标签: c#

下面我将我尝试做的伪代码放在一起。我不完全确定如何用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;
    }
}

2 个答案:

答案 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 {
    ...
}