如何在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及以上。这种情况有两种选择:- 将项目升级为.NET Core/.NET 5+项目;
- 修改代码兼容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
相关产品推荐
相关产品推荐

