Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#开关响应列表_C#_Switch Statement - Fatal编程技术网

C#开关响应列表

C#开关响应列表,c#,switch-statement,C#,Switch Statement,所以我可能没有拼写这个问题,但我真的看不到其他解释我自己的方法 我的问题是:我们是否可以改变开关的大小写,以响应foreach循环中的列表之类的内容?如果不能,是否还有其他可行的方法 为了更清楚,我将举一个例子: List<string> strings = new List<string>(); //use foreach display all strings string Choice = Console.ReadLine(); switch(Choice) /*

所以我可能没有拼写这个问题,但我真的看不到其他解释我自己的方法

我的问题是:我们是否可以改变开关的大小写,以响应foreach循环中的列表之类的内容?如果不能,是否还有其他可行的方法

为了更清楚,我将举一个例子:

List<string> strings = new List<string>();
//use foreach display all strings
string Choice = Console.ReadLine();
switch(Choice)

/* here instead of having static cases like
case "oneCase"
/do something
break;
*/

is it possible to have a

foreach(string str in strings)
{
case str:
//do something
break;
}
所以为了继续,我有一个列表,它不是一直都有相同的长度,所以我试图根据这个类来切换大量的案例

编辑4:我开始看字典,也看看这个问题:


感谢大家的帮助如果需要更多帮助,我会回来的

如果您打算根据用户输入的值运行操作,您可以使用操作字典:

var d = new Dictionary<string, Action>();
d.Add("a", () => Console.WriteLine("You typed 'a'!");

if (d.TryGetValue(input, out Action action))
{
    action();
}

如果您打算根据用户输入的值运行操作,则可以将字典用于操作:

var d = new Dictionary<string, Action>();
d.Add("a", () => Console.WriteLine("You typed 'a'!");

if (d.TryGetValue(input, out Action action))
{
    action();
}

例如,您希望在开关中执行什么操作?您的
case
变量必须是编译时常量,因此不能。请使用
foreach
。用选项填充字符串列表并在其上迭代。下面用字典注释更好。Switch不是合适的工具。我认为字典或类似的东西会更合适。如果你能准确地解释你想做什么-也许用一个小例子-我们将能够提供更好的帮助。例如,你想在切换中做什么?你的
case
变量必须是编译时常数,所以不要。使用
foreach
。用选项填充字符串列表并在其上迭代。下面用字典注释更好。Switch不是合适的工具。我认为字典或类似的东西更合适。如果你能准确地解释你想做什么——也许用一个小例子——我们就能更好地帮助你。
switch (input)
{
    case "a":
        Console.WriteLine("You typed 'a'!");
        break;
}