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

如何在下拉框选择驱动器时避免使用if-else语句?

移除if-else简化驱动器对应CSV文件读取逻辑

核心思路是从输入的驱动器字符串里提取纯驱动器号,动态拼接CSV文件路径,不用逐个判断每个驱动器,同时把重复的读取CSV逻辑抽成独立方法,彻底摆脱繁琐的if-else。

步骤1:提取驱动器号并动态构建路径

从你的str(比如"(D:)")里去掉括号,拿到纯驱动器标识,直接拼接出CSV文件的完整路径:

// 提取驱动器号,比如从"(D:)"得到"D:"
var driveLetter = str.Trim('(', ')');
// 动态构建CSV路径
var csvPath = $@"{driveLetter}\file1.CSV";

步骤2:把重复的读取逻辑抽成方法

把原来写在每个if-else块里的读取CSV、赋值UI、异常处理逻辑单独封装成方法,避免代码重复:

private void ReadAndLoadSettings(string csvPath)
{
    try
    {
        using (var fs = File.Open(csvPath, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            var csvFileDescription = new CsvFileDescription
            {
                FirstLineHasColumnNames = true,
                IgnoreUnknownColumns = true,
                SeparatorChar = ',',
                UseFieldIndexForReadingData = false
            };

            var csvContext = new LINQtoCSV.CsvContext();
            var settings = csvContext.Read<Settings>(csvPath, csvFileDescription);

            // 取第一条数据(原代码循环赋值会导致最后一条覆盖前面的,按需调整)
            var firstSetting = settings.FirstOrDefault();
            if (firstSetting != null)
            {
                tbx_ssid.Text = firstSetting.SSID;
                tbx_pass.Text = firstSetting.password;
            }
            else
            {
                tbx_ssid.Text = "";
                tbx_pass.Text = "";
            }

            if (string.IsNullOrEmpty(tbx_ssid.Text) && string.IsNullOrEmpty(tbx_pass.Text))
            {
                MessageBox.Show("No data!");
            }
        }
    }
    catch (FileNotFoundException)
    {
        MessageBox.Show("File not exists!");
    }
}

步骤3:最终简化后的调用代码

原来一堆if-else的地方,现在只需要几行代码:

var driveLetter = str.Trim('(', ')');
var csvPath = $@"{driveLetter}\file1.CSV";
ReadAndLoadSettings(csvPath);

额外修正点

  • 原代码里有拼写错误:csvPot应为csvPath,exsists改为exists,重构代码已修正。
  • 原foreach循环会将所有setting的内容重复赋值到文本框,最终只保留最后一条数据的内容,改用FirstOrDefault()更贴合常规需求,若需处理多条数据可再调整逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:37:45