2016-09-25 2 views
1

Wie kann ich das kürzer schreiben? Für jeden Fall muss ich dies schreiben und dann ist es zu lang, weil es 48 Nummern gibt, also brauche ich 48 Fälle. Gibt es eine Möglichkeit, eine Schleife zu machen?Wie kann ich Schleife anstelle von switch statement machen?

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

Sie haben offensichtlich den falschen Weg genommen. Aber Ihr Code ist zu kurz, um zu verstehen, was er tut. Aber davon kann ich sagen, n0, n1, n2 sollte ein Array sein. – bokan

+0

Sie müssen nur 'ballBounce' mit' nX' paaren. Klingt so, als ob du ein 'Dictionary ' brauchst, dann einfach: 'if (ballBounce == dictionary [ballBounce]) textBox1.Text = number.ToString()' – haim770

Antwort

4

Die Schleife ist in diesem Fall nutzlos. Sie können Wörterbuch verwenden.

private Dictinoary<string, string> cases = new Dictionary<string, string> { 
    {"1", "one"}, 
    {"2", "two"}, 
    // ... 
}; 

// in some method 
string text; 
if (cases.TryGetValue(ballBounce.ToString(), out text)){ 
    this.textBox1.Text = text; 
} 

Wenn Sie etwas intelligenter als einfacher Wert möchten, können Sie Funktionen im Wörterbuch haben.

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

warum verwenden Sie if mit case? müssen Sie nicht zweimal überprüfen. auch wenn dies der Code für jeden Fall

textBox1.Text = number.ToString(); 

dann brauchen Sie nicht switch oder if textBox1.Text = number.ToString(); jsut zu schreiben und Sie sind gut zu gehen. auch wenn Sie einige Fälle ony Sie es auf diese Weise tun können:

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

Basierend auf Ihren ToString() 's, ich gehe davon aus, dass ballBounce ein int.

if (ballBounce <= 48 && ballBounce > 0) 
{ 
    textBox1.Text = ballBounce.ToString(); 
} 
Verwandte Themen