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

C#访问switch语句内定义的SUBJECT等变量报上下文不存在错误求助

问题原因
  • 这是C#的变量作用域规则导致的:在case分支的大括号{}内部声明的SUBJECT、BODY变量,作用域仅局限于当前分支的大括号范围内,跳出switch语句后这些变量就已经被销毁,所以外部访问会提示不存在。
  • 你当前每个分支里都是重新声明新的局部变量,而不是给公共变量赋值,自然外部拿不到对应值。
修复方案

基础修复(保持现有switch结构不变)

提前在switch语句外部声明两个变量,分支内只做赋值操作即可,示例代码:

// 提前在switch外声明变量,作用域覆盖后续的邮件构造逻辑
string SUBJECT = string.Empty;
string BODY = string.Empty;

switch (mainMenu.SelectedApplication)
{
    case "Application1":
        LogHandler.Log(LogTarget.File, "Selected Application: Application 1 Queued");
        // 直接赋值,不要加string重新声明
        SUBJECT = "blah blah";
        BODY = "blah blah";
        break;
    case "Application2":
        LogHandler.Log(LogTarget.File, "Selected Application: Application 2 Queued");
        SUBJECT = "blah blah";
        BODY = "blah blah";
        break;
    case "Application3":
        LogHandler.Log(LogTarget.File, "Selected Application: Application 3 Queued");
        SUBJECT = "blah blah";
        BODY = "blah blah";
        break;
    // 建议加默认分支处理异常情况
    default:
        throw new NotSupportedException($"不支持的应用类型:{mainMenu.SelectedApplication}");
}

// 后续可以正常调用变量构造邮件
MailMessage message = new MailMessage();
message.Subject = SUBJECT;
message.Body = BODY;

优化方案(推荐,减少冗余代码)

如果后续应用数量会增加,可以用字典存储配置,完全省略switch语句,后续新增应用只需要添加字典项即可:

// 定义应用配置字典,key是应用名,value是元组存储主题和正文
var appMailConfig = new Dictionary<string, (string Subject, string Body)>
{
    {"Application1", ("blah blah", "blah blah")},
    {"Application2", ("blah blah", "blah blah")},
    {"Application3", ("blah blah", "blah blah")}
};

// 校验应用是否存在
if (!appMailConfig.TryGetValue(mainMenu.SelectedApplication, out var config))
{
    throw new NotSupportedException($"不支持的应用类型:{mainMenu.SelectedApplication}");
}

// 打日志
LogHandler.Log(LogTarget.File, $"Selected Application: {mainMenu.SelectedApplication} Queued");

// 直接取配置构造邮件
MailMessage message = new MailMessage();
message.Subject = config.Subject;
message.Body = config.Body;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:08