1

(不确定标题是否充分说明了这个问题)

我有这段代码:

string input = "5";
   if (input == ""  ||
       input == "1" ||
       input == "2" ||
       input == "3" ||
       input == "4" ||
       input == "_" ||
       input == "6" ||
       input == "7" ||
       input == "8")
     {/* ... */}
   else
     {/* ... */}

我怎样才能让它看起来更好?有什么方法可以删除重复input的 s 吗?

upd : switch 可能会使情况变得更糟,因为在我的情况下,我将检查许多条件,其中大多数将运行非常有限数量的方法。

4

6 回答 6

7

是的,您可以编写一个像这样的扩展方法:

    public static bool In<T>(this T value, params T[] list)
    {
        return list.Contains(value);
    }

并按如下方式使用它:

if (input.In("", "1", "2", ...))
...
于 2012-05-05T21:07:08.810 回答
3

好吧,您可以switch在一般情况下使用 a (尽管这种体验在 VB.NET 中要好得多),但如果它们都是一个字符或更少,您可以使用字符串:

if("1234_678".Contains(input)) {
    // ...
}
于 2012-05-05T21:06:44.527 回答
1

将条件表达式包装在函数中,代码变得更易于阅读。实际的表达式并不简单,但代码更容易阅读。

if (IsSomething(input))
{
 /* do stuff */
}
于 2012-05-05T21:11:37.943 回答
1

也许您可以尝试使用开关。它可能更像样。如果这是您想要的,这将更适合个人测试。

更多信息可以在这里找到:http: //msdn.microsoft.com/en-us/library/06tc147t%28v=vs.71%29.aspx

    switch(input){
      case "1":
      // Do something
      break;
      case "2":
      // Do something else
      break;
      case "_":
      // Do something else
      break;
      default:
      // Otherwise do this
      break;
    }
于 2012-05-05T21:12:46.567 回答
1

或者你可以这样做:

List<string> list = new List<string>{"","1","2","3","4","5","6","7","8"};

            if (list.Contains(input))
            {
                Console.WriteLine("found");
            }
于 2012-05-05T21:15:51.730 回答
1

这将是解决此问题的一个选项:

  string input = "5";
  List<string> Values = new List<string>{ "1", "2","3","4", "5" };
  if(Values .Contains(input))
    {
         //Your Action
    }
于 2012-05-05T21:17:11.043 回答