簡體   English   中英

如何制作循環而不是switch語句?

[英]How can I make loop instead of switch statement?

我該如何寫得更短? 對於每種情況,我都必須寫這個,然后太長了,因為有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; ...

在這種情況下,循環是無用的。 您可以使用字典。

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

基於您的ToString(),我假設ballBounce是一個int。

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

為什么使用if with case 您無需檢查兩次。 如果這是每種情況的代碼

textBox1.Text = number.ToString();

那么您不需要switch或者if jsut編寫textBox1.Text = number.ToString(); 而且你很好。 另外,如果您遇到某些情況,也可以這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM