如何让.NET 6 Preview 7的IAdditionOperators<,,>强制要求实现+运算符
问题原因
你遇到的现象属于.NET 6 预览版的正常表现:静态抽象接口成员(IAdditionOperators<,,>等算术运算符接口依赖的核心特性)并未在.NET 6 正式版中落地,该特性是.NET 7 才正式发布的成熟功能。.NET 6 预览版仅提供了该特性的早期原型实现,编译器层面未完整接入未实现接口成员的强制校验逻辑,因此会出现未实现+运算符也能正常编译的问题。
解决步骤
- 升级开发环境:将.NET SDK升级到7.0及以上正式版本,Visual Studio升级到17.4及以上版本(对应支持.NET 7的稳定版本)
- 调整项目配置:
- 将目标框架
TargetFramework修改为net7.0或更高版本 - 移除原项目中
System.Runtime.Experimental的预览包引用,.NET 7已将算术运算符接口纳入核心类库,无需额外引用预览包 - 将
LangVersion设置为11或更高版本,也可直接设置为latest使用最新的C#版本
- 将目标框架
配置与代码示例
修改后的项目文件:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <LangVersion>11</LangVersion> </PropertyGroup> </Project>
实现IAdditionOperators<,,>的正确代码示例:
using System; using System.Numerics; namespace TestCode { // 未实现+运算符时,编译器会直接抛出未实现接口成员的错误 public class Foo : IAdditionOperators<Foo, Foo, Foo> { public static Foo operator +(Foo left, Foo right) { // 实现自定义加法逻辑 return new Foo(); } } }
注意:如果坚持使用.NET 6 预览版环境,无法实现编译器强制校验的需求,该版本的特性实现存在缺失,仅适用于早期体验,不建议用于正式开发。
内容的提问来源于stack exchange,提问作者Nigel
相关产品推荐
相关产品推荐

