You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何通过Switch语句执行多段代码块?

C# 实现多规则函数执行的方案

C# 里普通switch语句不允许重复定义同一个case值,你写的那种包含重复case 'A'、case 'B'的代码直接编译会报错,但有几种实用方式能实现你要的逻辑:

1. 拆分判断(简单直接)

先处理单个值对应的函数,再单独判断组合条件执行对应函数,逻辑清晰易懂:

char v = 'A';

// 执行单个值绑定的函数
switch (v)
{
    case 'A': Func1(); break;
    case 'B': Func2(); break;
    case 'C': Func3(); break;
    case 'D': Func5(); break;
}

// 执行组合条件绑定的函数
if (v == 'A' || v == 'C')
    Func4();
if (v == 'B' || v == 'D')
    Func6();

2. Switch表达式+委托列表(C# 8.0+)

用switch表达式直接映射每个字符对应的函数集合,统一管理规则,扩展方便:

// 先定义你的函数示例
void Func1() => Console.WriteLine("执行Func1");
void Func2() => Console.WriteLine("执行Func2");
void Func3() => Console.WriteLine("执行Func3");
void Func4() => Console.WriteLine("执行Func4");
void Func5() => Console.WriteLine("执行Func5");
void Func6() => Console.WriteLine("执行Func6");

char v = 'B';
// 映射每个字符对应的所有待执行函数
var actions = v switch
{
    'A' => new List<Action> { Func1, Func4 },
    'B' => new List<Action> { Func2, Func6 },
    'C' => new List<Action> { Func3, Func4 },
    'D' => new List<Action> { Func5, Func6 },
    _ => new List<Action>() // 处理未定义的字符
};

// 遍历执行所有绑定的函数
foreach (var action in actions)
    action.Invoke();

3. 字典映射(适合动态调整规则)

把字符和对应的函数列表存入字典,适合需要运行时修改规则的场景:

// 提前构建映射字典
var actionMap = new Dictionary<char, List<Action>>
{
    { 'A', new List<Action> { Func1, Func4 } },
    { 'B', new List<Action> { Func2, Func6 } },
    { 'C', new List<Action> { Func3, Func4 } },
    { 'D', new List<Action> { Func5, Func6 } }
};

char v = 'C';
// 查找并执行对应函数
if (actionMap.TryGetValue(v, out var actions))
{
    foreach (var action in actions)
        action();
}

内容的提问来源于stack exchange,提问作者Disti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:22:50