我有这样的函数(foo):我需要比较输入字符串并相应地执行任务。 任务相同,但仅适用于一组选定的值。对于所有其他值,什么都不做。
function foo(string x)
{
if(x == "abc")
//do Task1
if(x == "efg")
//do Task1
if(x == "hij")
//do Task1
if(x == "lmn")
//do Task1
}
除此之外还有其他方法可以进行检查吗?或者将OR
运算符放在if
内?
首选方式是什么?
答案 0 :(得分:10)
有很多方法可以做到这一点。一个如下:
var target = new HashSet<string>{ "abc", "efg", "lmn" };
if (target.Contains(x)) {
...
}
在max [我的字符串列表]可以增长到50个字符串,这是一种罕见的可能性。
然后你应该在课堂上target
成static readonly
,如下所示:
private static readonly StringTargets = new HashSet<string>{ "abc", "efg", "lmn" };
这样做可以确保集合只创建一次,并且每次执行完成后都不会重新创建集合。
答案 1 :(得分:7)
这样做
function foo(string x)
{
switch(x)
{
case "abc":
case "efg":
case "hij":
case "lmn":
{
//do task 1
break;
}
default:
break;
}
}
或者你也可以这样做
if(x == "abc"||x == "efg"||x == "hij"||x == "lmn")
//do Task1
答案 2 :(得分:0)
一种方法是创建一个可接受的字符串数组,然后查看该数组是否包含x
function foo(string x)
{
string[] strings = new string[] {"abc", "efg", "hij", "lmn"};
if (strings.contains(x)){
//do task 1
}
}
答案 3 :(得分:-1)
您可以使用带有默认值的switch语句来捕获任何与
不匹配的内容http://blogs.msdn.com/b/brada/archive/2003/08/14/50227.aspx
function foo(string x) {
switch(x) {
case "abc":
//do task 1
break;
case "efg":
//do task 2
break;
default:
//all other cases
break;
}
}