以下接口在带有C#-8.0 的.Net Core控制台应用程序中没有错误
interface I
{
public abstract void f();
public virtual void g() => Console.WriteLine("g");
public sealed void h() => Console.WriteLine("h");
}
abstract
阻止在接口中添加定义。CCD_ 2和CCD_。sealed
阻止在派生类中实现h
。
abstract
、virtual
和sealed
在接口中使用时,在当前实现的C#-8版本中是否有任何其他含义或应用?它们应该如何以及何时在接口中使用?
这来自提案:
接口的语法被放宽,允许在其成员。允许以下内容:私有、受保护、内部、,public、virtual、abstract、sealed、static、extern和partial。
声明包含主体的接口成员是
virtual
成员,除非使用了sealed
或private
修饰符。virtual
修饰符可以用于函数成员,否则隐含地CCD_ 13。类似地,尽管abstract
是默认的没有实体的接口成员,可以给定该修饰符明确地可以使用sealed
声明非虚拟成员关键字。这是接口的
private
或sealed
函数成员的错误没有身体。private
函数成员可能没有修饰符sealed
。