接口与抽象性能 C#

Pra*_*bhu 2 c# oop interface abstract

假设我有一个包含 3 个方法的接口,即 m1()、m2()、m3(),并且我有一个抽象类仅包含抽象方法,即 m1()、m2()、m3()。假设这个抽象类或接口将来不会改变。在这种情况下我应该选择什么以及为什么?他们中的任何一个会有更好的表现吗?

Geo*_*yar 6

以最简洁的方式编写代码,然后对其进行分析。如果它的性能没有达到您想要的效果,请找到瓶颈并修复它。

接口和抽象类是不同的抽象机制。抽象类允许您在抽象类中执行一些工作并调用需要在派生类中实现的抽象方法。接口还没有任何实现,但一个类可以实现许多接口。如果您没有实现任何行为,只是声明公共形状必须是什么,请使用接口。

接口实现的调用和抽象方法重写(或虚拟方法重写)之间的性能几乎没有差异。事实上,我上次研究这个问题时,它们编译为相同的 IL。即使存在性能差异,与其余代码相比,它也可以忽略不计。