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

为何C# 11接口静态成员未被强制实现?附强制实现方法

如何强制实现C#接口中的静态成员?

在C# 11和.NET 7版本中,接口支持定义静态成员,但默认情况下,实现接口的类并不会被强制实现这些静态成员。比如你定义的这个接口:

public interface IHasInstance<T>
{
    static T Instance { get; set; }
}

实现该接口的类即使不编写对应的静态属性(比如下面这种),编译器也不会报错:

internal static MyClass Instance { get; } = new();

要让实现接口的类必须强制实现接口中的静态成员,只需要给接口里的静态成员加上abstract修饰符即可。修改后的接口代码如下:

public interface IHasInstance<T>
{
    abstract static T Instance { get; set; }
}

此时,任何实现IHasInstance<T>的类都必须提供对应的静态Instance属性实现,否则编译器会抛出错误。比如正确的实现类代码:

public class MyClass : IHasInstance<MyClass>
{
    public static MyClass Instance { get; set; } = new();
}

内容的提问来源于stack exchange,提问作者IneedHelp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:04:59