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

如何在WPF中将C#语言版本改为8.0?版本选项禁用问题求助

解决C# 8.0 switch表达式语言版本不可修改的问题

我编写了如下C#代码:

private Brush GetEventBrush(string eventType) => eventType switch
{
    "Created" => Brushes.LightGreen,
    "Changed" => Brushes.LightBlue,
    "Deleted" => Brushes.OrangeRed,
    _ => Brushes.White
};

代码在switch和_位置出现错误,错误提示一致:

特性“递归模式”在C# 7.3中不可用,请使用8.0或更高版本的语言。

我尝试通过右键解决方案资源管理器中的项目→属性→生成→高级修改语言版本,但该选项呈灰色不可用,以下是解决办法:

  • 检查项目类型
    如果是传统.NET Framework项目(如.NET Framework 4.x),C#版本最高仅支持到7.3,无法升级到8.0及以上。这种情况有两种选择:

    1. 将项目升级为.NET Core/.NET 5+项目;
    2. 修改代码兼容C# 7.3,改用普通switch语句:
      private Brush GetEventBrush(string eventType)
      {
          switch (eventType)
          {
              case "Created":
                  return Brushes.LightGreen;
              case "Changed":
                  return Brushes.LightBlue;
              case "Deleted":
                  return Brushes.OrangeRed;
              default:
                  return Brushes.White;
          }
      }
      
  • 手动编辑项目文件
    如果是.NET Core/.NET 5+项目但语言版本选项灰色,直接编辑项目的.csproj文件:
    找到文件中的<PropertyGroup>节点,添加或修改语言版本配置:

    <LangVersion>8.0</LangVersion>
    

    也可以设置为最新支持的版本:

    <LangVersion>latest</LangVersion>
    

    保存后重新加载项目即可生效。

  • 确认.NET SDK版本
    确保本地安装了支持C# 8.0及以上的.NET SDK(.NET Core 3.0及以上支持C# 8.0,.NET 5+支持更高版本)。如果SDK版本过低,即使修改项目文件也无法启用新特性,需要先下载更新对应版本的SDK。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:20:06