抽象还是虚拟方法?

时间:2011-01-26 11:50:36

标签: c# .net

抽象类推荐什么?

让虚方法返回null,或者有一个抽象方法吗?

让它们返回null是方便和容易的,因为我不必做任何继承自抽象类的事情。但是,如果是出于目的,错误或设计的原因,返回null有点难以理解....

对此有明确的建议吗?

2 个答案:

答案 0 :(得分:16)

如果返回null是一个明智且理智的事情,可以作为默认行为(使用支持文档),那么virtual也许可以。同样,如果您可以创建合理的默认值,但只想提供可扩展性:virtual

如果(具体)类无法运行而没有非默认实现,则将其设为abstract。这里的案例手册是Stream:没有理智的实现字节来自哪里?(/转到)。

答案 1 :(得分:2)

如果我要求派生类提供功能,我有一个抽象方法,如果我不那么烦恼,我有一个返回null(或做一些默认操作)的虚方法。