简体   繁体   English

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

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

I'm new to C# and I'm trying to figure out how I declare the values of arrays in switch statements. 我是C#的新手,我想弄清楚如何在switch语句中声明数组的值。 I'm used to using PHP and Javascript often and I can't figure out how I'd have to do this in C#. 我习惯于经常使用PHP和Javascript,但无法弄清楚如何在C#中执行此操作。 This is what I have right now: 这就是我现在所拥有的:

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

Is there a way in C# to make my switch statement shorter? C#中有没有一种方法可以使我的switch语句更短? For example something like this: 例如这样的事情:

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

First off, I would use List<T> instead of ArrayList . 首先,我将使用List<T>而不是ArrayList

Second, if you want to add a range of items, use AddRange() and pass in a new string array: 其次,如果要添加一系列项目,请使用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
}

You can use AddRange for this: 您可以为此使用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;
        // ...
}

you almost got it :) 你几乎明白了:)

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

Per your posted code, you can't bypass the switch statement but as already answered you can use AddRange() method to add list of string at once. 根据您发布的代码,您不能绕过switch语句,但是正如已经回答的那样,您可以使用AddRange()方法立即添加string列表。 Finally, it's awful using ArrayList instead use List<string> like 最后,使用ArrayList代替使用List<string>太糟糕了

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

Use Dictionary 使用字典

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