Mono支持的C#版本与官方页面标注不一致相关问题咨询
Mono C#版本支持差异说明
出现这种认知和官方文档不一致的情况,核心原因是官方文档信息未同步更新,你的认知本身是有事实依据的,具体原因拆分如下:
- 官方文档记录的是2018年之前Mono旧稳定分支的支持状态:这一阶段Mono使用自研的
mcs编译器,最高完整支持到C# 7,部分C# 7特性确实存在实现不全的问题,文档写完后一直没有跟进后续版本的功能更新。 - 2018年之后Mono完成和微软.NET开源代码栈的合并,从5.18版本开始默认改用微软官方的Roslyn编译器,直接复用.NET官方的C#语法解析逻辑,因此可以支持C# 8甚至更高版本的语法,你了解的支持情况对应的就是这部分新版本的特性。
- 有个特例需要注意:部分C# 8及更高版本的特性依赖.NET Core/.NET 5+的基础类库实现,如果你使用Mono配套的.NET Framework兼容类库运行代码,部分高版本特性会因为缺少底层实现无法正常运行,这也是很多开发者误以为Mono不支持高版本C#的常见原因。
- 如果要在新版Mono中使用C# 8及更高版本的语法,编译时指定参数
-langversion:8或者对应目标版本即可。
内容的提问来源于stack exchange,提问作者VPavliashvili
相关产品推荐
相关产品推荐

