在类层次 struct 中定义方法时,C#中的override关键字和new关键字有什么不同?

推荐答案

下一页很好地总结了你的问题.

Knowing When to Use Override and New Keywords

Summary

Override:当基类的方法在派生类中被重写时,将使用派生类中的版本,即使调用代码"不知道"该对象是派生类的实例.

New:如果使用new关键字而不是override,则派生类中的方法不会重写基类中的方法,它只是将其隐藏.

如果不指定new或overrides,则结果输出与指定new时相同,但也会收到编译器警告(因为您可能没有意识到正在基类方法中隐藏一个方法,或者实际上您可能想重写它,只是忘记了包含关键字).

Override:与基类中的虚/抽象/重写类型的方法一起使用

New:基类未将方法声明为虚/抽象/重写时

.net相关问答推荐

ASP.NET核心最小API必须以正斜杠开头吗?

在 F# 中处理 Option - Some(null) 的好策略是什么

查询 MongoDb 中嵌入式文档中的一个字段,该字段抛出调用运算符的左侧必须是对持久属性的直接访问

在 WP7 中将 List 转换为 ObservableCollection

重新启动(回收)应用程序池

如何等到远程 .NET 调试器附加

如何找到 ManualResetEvent 的状态?

如何使用转储文件来诊断内存泄漏?

Microsoft.Practices.ServiceLocation 来自哪里?

什么版本的 .NET 附带什么版本的 Windows?

System.String.Copy 在 .NET 中有什么用?

有没有办法从方法返回匿名类型?

如何将 WebResponse.GetResponseStream 返回转换为字符串?

C# 中的 override 和 new 关键字有什么区别?

CI服务器的比较?

判断 .NET 中的目录和文件写入权限

如何从头开始以编程方式配置 log4net(无配置)

DateTime.Compare 如何判断日期是否小于 30 天?

Uri.Host 和 Uri.Authority 有什么区别

在类型 c# 上切换大小写