Rac*_*rma 4 c# switch-statement
如何&&在开关盒中使用操作器?
这就是我想要做的:
private int retValue()
{
string x, y;
switch (x && y)
{
case "abc" && "1":
return 10;
break;
case "xyz" && "2":
return 20;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,"abc"并且"1"都是类型string,编译器给我的消息:
"operator &&不能应用于字符串"
switch声明中没有这样的运算符.该switch语句对单个变量进行操作,该变量是值类型或字符串.看到:
您的示例中的实际问题是switch表达式和case标签中的两个都适用&&于strings.你不能应用于&&字符串,它只适用于布尔值(除非你重载它并定义一个对字符串起作用的新函数).
您要完成的任务可能是同时检查两个不同变量的值switch.这是不可能的; switch一次只检查一个变量.解决方案是使用if语句或专用CheckStrings(string s1, string s2)方法(可能使用也可能不使用if语句).
在评论中,您表达了对长度的担忧.注意:
private int retValue(string x, string y)
{
if (x == "abc" && y == "1") return 10;
if (x == "xyz" && y == "2") return 20;
throw new Exception("No return value defined for these two strings.")
}
Run Code Online (Sandbox Code Playgroud)
更短,即使您通过跳过冗余break;语句并将returns放在同一行上来减少收益.
尽管已经有一个被接受的答案......
要实现AND中的逻辑switch,必须这样做:
switch(x + y)
{
case "abc1":
return 10;
break;
case "xyz2":
return 20;
break;
}
Run Code Online (Sandbox Code Playgroud)
哪个有效。
对于逻辑,OR请参阅zey答案。