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

标签 c# java .net virtual-functions

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

我想起了阅读 Anders Hejlsberg 的一段关于现有架构带来的几个优点的段落。但是,副作用呢?默认情况下使用非虚拟方法真的是一个很好的权衡吗?

最佳答案

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

virtual 方法也会对性能产生轻微影响。然而,这可能不是主要原因。

关于c# - 为什么 C# 默认将方法实现为非虚拟的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/814934/

相关文章:

c# - 当一个任务引发另一个任务与第一个任务同步时,Task.WaitAll挂起

c# - 如何将一个类中的 SQL 异常号抛给另一个类中的常规异常? C#

c# - 将 Insert<T>(T o) 与对象类型一起使用

C# 没有 SortedList<T> 吗?

c# - 泛型与否泛型

c# - 使用 PKCE 的 Azure 授权代码流不适用于 secret 客户端(Web 应用客户端类型)

Java 8 流、groupBy 和方法调用

java - 如何按日期对数组数组进行排序?

java - JTable,Java

c# - 如何以引用的 id 作为条件进行 NHibernate 查询?