接口中属性标记abstract与不标记是否存在差异?
接口属性添加abstract关键字的差异分析
先看你给出的代码:
public interface IMyInterface { public string Property { get; } public abstract string AbstractProperty { get; } }
结论很明确:给接口属性添加abstract关键字不会产生任何功能上的差异,你的推测是对的——接口属性本质上已经是隐式抽象的,加abstract只是显式声明而已。
在C#的语法规则里,接口的所有成员(包括属性、方法、事件等)默认就是public abstract的,哪怕你不写这些修饰符。所以上面代码里的Property和AbstractProperty在语义、行为上完全一致:
- 实现该接口的类必须强制实现这两个属性的
get访问器,否则会触发编译错误 - 两者都不能包含具体实现(接口成员本身就不允许有实现,除非是默认接口方法,但这里的属性只有get访问器,没有实现逻辑)
显式添加abstract关键字只是一种代码风格的选择,目的是让接口成员的抽象特性更直观,让阅读代码的人一眼就能明确这是必须被实现的抽象成员,但不会改变代码的实际运行逻辑。
内容的提问来源于stack exchange,提问作者me.at.coding
相关产品推荐
相关产品推荐

