我该如何使用&&
开关盒中的操作员?
这就是我想做的:
private int retValue()
{
string x, y;
switch (x && y)
{
case "abc" && "1":
return 10;
break;
case "xyz" && "2":
return 20;
break;
}
}
我的问题是"abc"
and "1"
都是类型string
编译器给我消息:
“运算符 && 不能应用于字符串”
中没有这样的运算符switch
声明。这switch
语句对单个变量进行操作,该变量是值类型或字符串。看:
- http://www.dotnetperls.com/switch http://www.dotnetperls.com/switch
- http://msdn.microsoft.com/en-us/library/06tc147t.aspx http://msdn.microsoft.com/en-us/library/06tc147t.aspx
你的例子中真正的问题是switch
表达式,并且在case
标签,您正在应用&&
to string
s。您无法申请&&
对于字符串,它仅适用于布尔值(除非您重载它并定义一个适用于字符串的新函数)。
您想要完成的任务可能是用一个同时检查两个不同变量的值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.")
}
更短,即使你忽略了跳过冗余的好处break;
陈述和投入return
s 在同一条线上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)