为何在接口方法上添加abstract修饰符编译器不报错?
关于C#接口中
abstract关键字的说明 - 接口中无实现的实例方法,默认就是抽象方法,必须由实现该接口的类提供具体实现。你在代码中显式添加
abstract关键字属于冗余写法,但语法合法,因此编译器不会标红报错。 - 从C# 8.0开始,允许在接口方法上显式标注
abstract,但这不会改变方法的本质——编译器会将其与未标注abstract的接口方法同等处理,这也是你在SharpLab中看不到差异的原因,两种写法生成的IL代码完全一致。 - 需要注意的是,只有无实现的接口实例方法才能添加
abstract:如果是带默认实现的方法、静态方法或私有接口方法,标注abstract会触发编译错误,但你的示例中是标准的无实现接口方法,所以符合语法规则。
内容的提问来源于stack exchange,提问作者Menyus777
相关产品推荐
相关产品推荐

