2011年7月21日 星期四 new
把new弄明白
在代码中,关键字new大家是一见如故。
1、使用new的方式一
我们在进行面向对象开发时,动不动就创建对象。类作为具体实例的抽象,我们当然无法去直接使用。
作为设计师,我们需要做的就是不断的创建多个类,设计这个类的方法和属性。
如今的软件行业更多的像是建筑业。建筑师设计好一幢建筑的模型,包括它的外观,结构,所用的素材。
而我们的new,就是建筑领域里的工程队,为设计师设计出来的抽象创建一个个具体的,如房顶,窗户,厨房等等,最后组建成我们的系统。当然最后的建筑是否伟大,还得取决于架构师。但我们'new'朋友可以说是矜矜业业,你要创建对象,你就调用一下。在.net运行环境中,不用去担心最后对象的垃圾回收问题。
在设计模式中,有一种很有意思的工厂模式,真如现实中工厂的原型相类似。当我们想生产饼干时,OK,你按动一下我们这个工厂中的生产饼干的开关,就可以创建了。
2、使用new的方式二
我们知道有了new,可以为对象很方便地创建内存空间。关键字new还有另外一种作用。
看下面的类的关系图:

学生类和教师类共同继承于Person类,但他们有共同的方法Say().
这个时候有人会想你把基类Person中的Say加上Virtual声明为虚方法,然后在Student类中用override 修饰Say,重写一下。
但如果Person类Say方法并未被声明为Virsual方法,那又该怎么办呢?修改Person类违背了开放和封闭原则。设计Person类的A君,不希望自己写的类被别人修改。
好吧,想继承Person类的B君也要发言Say()一下,没办法,让我们来使用new关键字,来重新设计一个同名的方法Say()吧。
要注意的是,B君设计的Student类中Say()方法已经和A君设计的Person类Say()毫无关系了.
3、使用new的方式三
new的使用还真是挺多的,别急,下面的一种用法可以说有不少初学者会忽略的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决