在对C#类的继承中,经常要用到overrid和new来满足新类自己的方法,C#提供了overrid来重写基类的方法,这样,新继承的类就有和基类相同的函数索引,但却有自己的实现方式,这样在新类实例中调用该方法,也就只调用自己重新写过的方法了。使用方法只要在该函数名前加上overrid就行了。
而使用new方法却和overrid有点不一样,new关键字可以显式隐藏从基类继承的成员,隐藏继承的成员意味着该成员的派生版本将替换基类版本,这里我个人理解是:它只是一种蕴藏,派生类从基类继承过来的其他方法调用关系中,仍然是在调用该方法,而不会调用用户使用new关键字新生成的方法,也就是基类的该旧方法还是存在的,而派生类又新增加了自己的一个类似方法。比如,在windows form 编程时,使用的OnResize方法,如果像下面这样写:
1
protected override void OnResize(EventArgs e)
2
{
3
Invalidate();
5
}

2

3

5

该函数中的Invalidate();提示应用程序,窗体需要刷新。每次拉动窗体使其变大或缩小时,都会刷新窗体,这是应为我重写了Form类中的OnResize方法,这样Form窗体大小发生变化时就会调用我重写过的函数,而不是基类的OnResize。
如果使用new方法,如下:




如果你在做本实验时看不出效果,建议可以添加一个overrid过的OnPaint函数


















【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端