1

(タイトルが問題を十分に説明しているかどうかはわかりません)

私はこのコードを持っています:

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

どうすれば見栄えが良くなりますか?繰り返しinputs を削除する方法はありますか?

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

まあ、一般的なケースでは a を使用できますswitch(VB.NET でのエクスペリエンスははるかに優れています) が、それらがすべて 1 文字以下になる場合は、文字列を使用できます。

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 に答える