简体   繁体   中英

How can I make loop instead of switch statement?

How can I write this shorter? For each case I have to write this and then It is too long because there are 48 numbers so I need 48 cases. Is there a way to make a loop?

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; ...

The loop is useless in this case. You can use dictionary.

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;
}

If you want something smarter than simple value, you can have functions in the dictionary.

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();
}

Based on your ToString()'s, I'm assuming that ballBounce is an int.

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

why do you use if with case ? you don't need to check twice. also if this is the code for every case

textBox1.Text = number.ToString();

then you don't need switch or if jsut write textBox1.Text = number.ToString(); and you are good to go. also if you have some cases ony you can do it that way:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM