哪个C#版本不再要求显式实现受保护接口成员?
C#中protected接口成员隐式实现规则的变更说明
C# 8 的原有规则
C# 8首次允许接口包含带访问修饰符的成员,其中protected接口成员要求实现类必须显式实现,否则会触发编译错误CS8704。例如以下代码在C# 8环境下无法通过编译:
public interface IFoo { protected void Method(); } public class Foo : IFoo { public void Method() { } }
对应的编译错误提示:CS8704 'Foo' does not implement interface member 'IFoo.Method()'. 'Foo.Method()' cannot implicitly implement a non-public member.
C# 11 及以后的行为变更
从C# 11开始,上述代码无需显式实现即可正常编译——类的public成员可以直接隐式匹配接口的protected成员,不再触发CS8704错误。
变更的时间与原因
该规则调整是C# 11正式推出的特性优化,目的是提升接口实现的灵活性:当接口的protected成员仅需要在实现类或其派生类中可见时,允许用类的public成员隐式实现,避免了必须编写显式实现代码的繁琐。
这并非其他语言特性的附带结果,而是专门针对protected接口成员实现逻辑的调整,让接口访问修饰符的规则更贴合开发者的使用直觉。
内容的提问来源于stack exchange,提问作者Mars
相关产品推荐
相关产品推荐

