交换机C#中的多个条件

时间:2012-10-18 07:55:46

标签: c#

无法在switch语句中添加多个条件。 如何使用switch语句执行此操作?我必须使用多个if条件吗?

string oldValue = ".....long string1....";
string newValue = ".....long string2....";
switch (oldValue.Length && newValue.Length)
{
    case <500 && <500:
        //insert as is
        break;
    case >500 && <500:
        //split oldValue into array of strings and insert each
        //insert newValue as is
        break;
    case <500 && >500:
        //insert oldValue As is
        //split newValue into array of strings and insert each
        break;
    case >500 && >500:
        //split oldValue into array of strings and insert each
        //split newValue into array of strings and insert each
        break;
    default:
        break;
}

4 个答案:

答案 0 :(得分:5)

不,你不能这样做。 switch语句测试值而不是表达式。

您需要使用if语句。

答案 1 :(得分:3)

查看您的评论时,oldValue的长度只会影响您使用oldValue执行的操作,而newValue的长度只会影响您使用newValue执行的操作。< / p>

为什么不把它分成两个单独的陈述?甚至是一种常用的方法?

string[] GetValuesToInsert(String input)
{
    if (input.Length < 500)
        return new[] {input};
    else
        return input.Split(...);
}

whatever.Insert(GetValuesToInsert(oldValue));
whatever.Insert(GetValuesToInsert(newValue));

答案 2 :(得分:1)

您无法执行此操作,您需要使用ifelse if

switch通常使用不同的技术跳转到右侧分支(称为跳转表)。基本上它是单个跳转,其目标位置是从value的{​​{1}}计算出来的,而不是一些序列比较。细节取决于架构。

答案 3 :(得分:0)

只是你破坏了switch语句规则。你不能在那里传递表达。 你需要传递一个值。请参考以下链接 http://msdn.microsoft.com/en-us/library/06tc147t(v=vs.71).aspx

您需要使用if-else语句。