2016-09-25 6 views
1

これはどのように短く書くことができますか?それぞれのケースについて、私はこれを書かなければならず、48の数字があるので、それは長すぎるので、48のケースが必要です。ループを作る方法はありますか?switch文の代わりにループを作るには?

switch (ballBounce.ToString()) 
     { 
      case "1": 
       if (ballBounce == n0) 
       { 
        textBox1.Text = number.ToString();       
       } 
       break; 

      case "2": 
       if (ballBounce == n1) 
       { 
        textBox1.Text = number.ToString(); 
       } 
       break; 

      case "3": 
       if (ballBounce == n2) 
       { 
        textBox1.Text = number.ToString(); 
       } 
       break; ... 
+0

明らかに間違った方法でした。しかし、あなたのコードは、それが何をしているかを理解するには短すぎます。しかし、それから、n0、n1、n2は配列でなければならないと言うことができます。 – bokan

+0

'ballBounce'と' nX'を組み合わせるだけです。あなたが 'Dictionary 'が必要なように聞こえますが、単純に 'if(ballBounce == dictionary [ballBounce])textBox1.Text = number.ToString()' – haim770

答えて

4

この場合、ループは役に立たない。 辞書を使用できます。

単純な値よりもスマートにしたい場合は、辞書に関数を含めることができます。

private Dictinoary<string, Func<string>> cases = new Dictionary<string, Func<string>> { 
    {"1",() => "one"}, 
    {"2",() => 
    { 
     if (DateTime.Now.Seconds % 2 == 0) { return "A"; } 
     else { return "B"; } 
    }}, 
    // ... 
}; 

// in some method 
Func<string> textProvider; 
if (cases.TryGetValue(ballBounce.ToString(), out textProvider)){ 
    this.textBox1.Text = textProvider(); 
} 
0

なぜあなたはcaseifを使用していますか? あなたは2回確認する必要はありません。 また、これは、あなたがtextBox1.Text = number.ToString();を書くjsut switchまたはif を必要としないすべてのケース

textBox1.Text = number.ToString(); 

するためのコードであれば、あなたが行ってもいいです。あなたがそのように行うことができますONYあなたには、いくつかのケースを持っている場合 も:

switch (ballBounce.ToString()) 
{ 
    case "1": 
    case "2": 
    case"3": 
    //.... 
    textBox1.Text = number.ToString(); 
} 
1

あなたのToString()さんに基づいて、私はballBounceがint型であることを仮定しています。

if (ballBounce <= 48 && ballBounce > 0) 
{ 
    textBox1.Text = ballBounce.ToString(); 
} 
関連する問題