【发布时间】:2021-07-30 16:59:35
【问题描述】:
我最近一直在玩接口中的静态成员。特别是静态方法。我注意到,每当我在接口中定义静态方法时,我都有义务使用默认实现来定义它。否则会出现编译时错误CS0501。我想知道的是,接口中定义的所有静态成员是否必须使用默认实现来定义?还是这只适用于接口中定义的静态方法?
public interface IFoo
{
public static void MethodFoo()
{
//implementation
}
}
【问题讨论】:
-
使用预览编译器我相信你可以制作方法
abstract。或者也许这是一个普遍可用的东西 -
@gunr2171 “否”静态成员(除了静态方法之外)在接口中定义时没有义务使用默认实现来定义?
-
你希望完成什么编译器不让你做的事情?
-
如果您不提供静态方法的实现,您希望在哪里提供实现?在实现接口的类中提供实现会破坏使成员静态的目的。
-
当你在一个接口上创建一个静态方法时,你并没有给它一个默认实现,你给它的是实现。 Default 实现仅适用于非静态事物。您不能继承静态成员,因此无法覆盖其行为。这适用于任何静态。
标签: c# interface static-methods