如何创建循环而不是switch语句?

时间:2016-09-25 10:35:25

标签: c# loops

我怎么写这个更短?对于每种情况,我必须写这个然后太长,因为有48个数字所以我需要48个案例。有没有办法制作循环?

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

3 个答案:

答案 0 :(得分:4)

在这种情况下,循环是无用的。 你可以使用字典。

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

如果你想要比简单值更聪明的东西,你可以在字典中使用函数。

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

答案 1 :(得分:1)

根据你的ToString(),我假设ballBounce是一个int。

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

答案 2 :(得分:0)

为什么将ifcase一起使用? 你不需要检查两次。 如果这是每个案例的代码

textBox1.Text = number.ToString();

那么您不需要switchif jsut写textBox1.Text = number.ToString();,你很高兴。 如果你有一些情况,你可以这样做:

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