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

哪个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:27:02