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

如何在C#中实现支持动态选项数的多选项选择方法?

动态选项选择方法优化方案

直接上优化后的代码,彻底摆脱冗余的switch-case,同时支持2-5个选项的动态切换:

string OptionChoice(int howManyOptions)
{
    // 先校验参数合法性,确保选项数量在2-5之间
    if (howManyOptions < 2 || howManyOptions > 5)
        throw new ArgumentOutOfRangeException(nameof(howManyOptions), "选项数量必须在2到5之间");

    // 生成允许的选项字符集合(包含大小写)
    var allowedChars = new HashSet<char>();
    for (int i = 0; i < howManyOptions; i++)
    {
        char upperChar = (char)('A' + i);
        allowedChars.Add(upperChar);
        allowedChars.Add(char.ToLower(upperChar));
    }

    // 动态构建符合匈牙利语习惯的提示文本
    string optionLabels = string.Join(", ", Enumerable.Range(0, howManyOptions).Select(i => $"'{(char)('A' + i)}'"));
    int lastCommaIndex = optionLabels.LastIndexOf(',');
    if (lastCommaIndex != -1)
    {
        optionLabels = optionLabels.Remove(lastCommaIndex, 1).Insert(lastCommaIndex, " vagy");
    }
    string prompt = $"\n\nMelyik opciót választod? (Nyomd meg az {optionLabels} billentyűt!) ";

    bool optionChosenIsValid = false;
    char optionChosen;

    do
    {
        Console.Write(prompt);
        optionChosen = Console.ReadKey().KeyChar;

        optionChosenIsValid = allowedChars.Contains(optionChosen);
        if (!optionChosenIsValid)
        {
            Console.Write("\nIlyen opció nincsen, kérlek próbáld újra!");
        }
    } while (!optionChosenIsValid);

    string selectedOption = optionChosen.ToString().ToUpper();
    Console.WriteLine($"\n({selectedOption}) lehetőség kiválasztva");

    return selectedOption;
}

核心优化点:

  • 参数合法性校验:提前拦截2-5以外的非法输入,避免后续逻辑出错。
  • 动态生成合法字符集:通过循环从'A'开始生成对应数量的字母,同时包含大小写版本,用HashSet实现快速存在性判断。
  • 自动生成提示文本:根据选项数量拼接出符合语言习惯的提示,比如4个选项时会自动显示'A', 'B', 'C' vagy 'D'。
  • 极简验证逻辑:用HashSet的Contains方法替代繁琐的switch-case,代码更简洁,后续扩展选项数量(比如到6个)只需调整参数范围即可。
  • 统一循环逻辑:只保留一套输入循环,所有动态逻辑提前处理,彻底消除重复代码。

使用示例:

调用OptionChoice(2)会自动适配2个选项的提示与验证逻辑,调用OptionChoice(5)则切换为5个选项的模式,无需修改方法内部代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:00:26