繁体   English   中英

如何在C#的switch语句中声明数组的值?

[英]How to declare the values of arrays in a switch statement in C#?

我是C#的新手,我想弄清楚如何在switch语句中声明数组的值。 我习惯于经常使用PHP和Javascript,但无法弄清楚如何在C#中执行此操作。 这就是我现在所拥有的:

string winkel = winkelDropdown.SelectedValue;
ArrayList products = new ArrayList();
output.Text = "Bij de " + winkel + " moet ik dit meenemen:<br />";
switch (winkel)
{        
    case "Albert Heijn":
        products.Add("Boter");
        products.Add("Kaas");
        products.Add("Eieren");
        break;
    case "Jumbo":
        products.Add("Spek");
        products.Add("Lamsvlees");
        products.Add("Huiswijn");
        break;
    case "Plus":
        products.Add("Spaghetti");
        products.Add("Pastasaus");
        products.Add("Kaasbroodje");
        break;
    case "Emté":
        products.Add("Jupiler Krat");
        products.Add("Barbeque kolen");
        products.Add("Frisdrank");
        break;
}
foreach (string product in products)
{
    output.Text += product + "<br />";
}

C#中有没有一种方法可以使我的switch语句更短? 例如这样的事情:

string[] productArray = string[3];
switch (winkel)
{        
    case "Albert Heijn":
        productArray = ["Boter", "Kaas", "Eieren"];
        break;
    case "Jumbo":
        productArray = ["Spek", "Lamsvlees", "Huiswijn"];
        break;
    case "Plus":
        productArray = ["Spaghetti", "Pastasaus", "Kaasbroodje"];
        break;
    case "Emté":
        productArray = ["Jupiler Krat", "Barbeque kolen", "Frisdrank"];
        break;
}

首先,我将使用List<T>而不是ArrayList

其次,如果要添加一系列项目,请使用AddRange()并传入新的字符串数组:

string winkel = winkelDropdown.SelectedValue;
List<string> products = new List<string>();
switch (winkel)
{        
    case "Albert Heijn":
        products.AddRange(new [] { "Boter", "Kaas", "Eieren" });
        break;
    case "Jumbo":
        products.AddRange(new [] { "Spek", "Lamsvlees", "Huiswijn" });
        break;
    //etc
}

您可以为此使用AddRange

string winkel = winkelDropdown.SelectedValue;
ArrayList products = new ArrayList();
output.Text = "Bij de " + winkel + " moet ik dit meenemen:<br />";
switch (winkel)
{        
    case "Albert Heijn":
        products.AddRange(new string[] {"Boter", "Kaas", "Eieren" });
        break;
        // ...
}

你几乎明白了:)

        string[] productArray;
        switch (winkel)
        {
            case "Albert Heijn":
                productArray = new[] {"Boter", "Kaas", "Eieren"};
                break;
            case "Jumbo":
                productArray = new[] { "Spek", "Lamsvlees", "Huiswijn"};
                break;
            case "Plus":
                productArray = new[] { "Spaghetti", "Pastasaus", "Kaasbroodje"};
                break;
            case "Emté":
                productArray = new[] {"Jupiler Krat", "Barbeque kolen", "Frisdrank"};
                break;
        }

根据您发布的代码,您不能绕过switch语句,但是正如已经回答的那样,您可以使用AddRange()方法立即添加string列表。 最后,使用ArrayList代替使用List<string>太糟糕了

List<string> products = new List<string>();

使用字典

var winkelToProducts = new Dictionary<string, string[]>();
// init winkel to its' products
var products = winkelToProducts[winkel];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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