一尘不染

为什么C#默认将方法实现为非虚拟方法?

c#

与Java不同,为什么C#默认将方法视为非虚函数?它是否更可能是性能问题而不是其他可能的结果?

我想起了安德斯·海斯伯格(Anders Hejlsberg)读的一段有关现有体系结构所带来的优势的文章。但是,副作用呢?默认情况下使用非虚拟方法真的不错吗?


阅读 205

收藏
2020-05-19

共1个答案

一尘不染

应该为继承 设计
类,以便能够利用它。virtual默认情况下拥有方法意味着该类中的每个函数都可以插入并替换为另一个函数,这并不是一件好事。许多人甚至认为sealed默认情况下应该使用类。

virtual方法也可能有轻微的性能影响。但是,这可能不是主要原因。

2020-05-19