无法在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;
}
答案 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)
您无法执行此操作,您需要使用if
和else if
。
switch
通常使用不同的技术跳转到右侧分支(称为跳转表)。基本上它是单个跳转,其目标位置是从value
的{{1}}计算出来的,而不是一些序列比较。细节取决于架构。
答案 3 :(得分:0)
只是你破坏了switch语句规则。你不能在那里传递表达。 你需要传递一个值。请参考以下链接 http://msdn.microsoft.com/en-us/library/06tc147t(v=vs.71).aspx
您需要使用if-else语句。