你必须知道的.net中把new说透中答案

看书中的例子没敲代码,始终不敢确定是什么。今天心痒,就测试了一把。

当然,不只是那个答案。也测试了其他的疑问。为了方便看答案加入了分割数据。

Code

答案是:

123
base class --
1111111111111111111111111111111
bas123
der456
2222222222222222222222222222222222222222
derve class --
3333333333333333333333333333333333
base class --
44444444444444444444444444444444444444444
bas123
der456

 第二种情况是IntNumber中的showInfo()方法不用new而是用override则答案是

123
base class --
1111111111111111111111111111111
bas123
der456
2222222222222222222222222222222222222222
derve class --
3333333333333333333333333333333333
derve class --
44444444444444444444444444444444444444444
bas123
der456

明白了,再看new在不同场合的定义

1,作为运算符,用于创建对象和调用构造函数。

2,作为修饰符,用于向基类成员隐藏继承成员。

作为修饰符,基本的规则可以总结为:实现派生类中隐藏方法,则基类方法必须定义为virtual,

将基类方法实现为vvirtual,能同时保证向前扩展和向后兼容,在派生类中通过new或override进行灵活控制。

new作为修饰符,实现隐藏基类成员时,不可和override共存,应为两者是互斥的:new用于实现创建新成员,同时隐藏基类的同名成员;

而override用于实现对基类成员的扩展。

posted @   fsl  阅读(337)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示