[英]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.