您的位置:知识库 »

[你必须知道的.NET] 第五回:深入浅出关键字---把new说透

作者: Anytao  来源: 博客园  发布时间: 2008-09-12 10:19  阅读: 5569 次  推荐: 1   原文链接   [收藏]  
[1] [你必须知道的.NET] 第五回:深入浅出关键字---把new说透
[2] [你必须知道的.NET] 第五回:深入浅出关键字---把new说透

系列文章导航:

[你必须知道的.NET] 开篇有益

[你必须知道的.NET] 第一回:恩怨情仇:is和as

[你必须知道的.NET] 第二回:对抽象编程:接口和抽象类

[你必须知道的.NET] 第三回:历史纠葛:特性和属性

[你必须知道的.NET] 第四回:后来居上:class和struct

[你必须知道的.NET] 第五回:深入浅出关键字---把new说透

[你必须知道的.NET] 第六回:深入浅出关键字---base和this

[你必须知道的.NET] 第七回:品味类型---从通用类型系统开始

[你必须知道的.NET] 第八回:品味类型---值类型与引用类型(上)-内存有理

[你必须知道的.NET] 第九回:品味类型---值类型与引用类型(中)-规则无边

[你必须知道的.NET] 第十回:品味类型---值类型与引用类型(下)-应用征途

[你必须知道的.NET] 第十一回:参数之惑---传递的艺术(上)

[你必须知道的.NET] 第十二回:参数之惑---传递的艺术(下)

[你必须知道的.NET] 第十三回:从Hello, world开始认识IL

[你必须知道的.NET] 第十四回:认识IL代码---从开始到现在

[你必须知道的.NET] 第十五回:继承本质论

[你必须知道的.NET] 第十六回:深入浅出关键字---using全接触

[你必须知道的.NET] 第十七回:貌合神离:覆写和重载

[你必须知道的.NET] 第十八回:对象创建始末(上)

[你必须知道的.NET] 第十九回:对象创建始末(下)

[你必须知道的.NET]第二十回:学习方法论

[你必须知道的.NET]第二十一回:认识全面的null

[你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考

[你必须知道的.NET]第三十二回,深入.NET 4.0之,Tuple一二


  本文将介绍以下内容:

  • 面向对象基本概念

  • new关键字深入浅出

  • 对象创建的内存管理  

  1. 引言

  园子里好像没有或者很少把new关键字拿出来说的,那我就占个先机吧,呵呵。那么,我们到底有必要将一个关键字拿出来长篇大论吗?看来是个问题。回答的关键是:你真的理解了new吗?如果是,那请不要浪费时间,如果不是,那请继续本文的循序之旅。

  下面几个问题可以大概的考察你对new的掌握,开篇之前,希望大家做个检验,如果通过了,直接关掉本页即可。如果没有通过,希望本文的阐述能帮你找出答案。

  • new一个class对象和new一个struct或者enum有什么不同?

  • new在.NET中有几个用途,除了创建对象实例,还能做什么?

  • new运算符,可以重载吗?

  • 范型中,new有什么作用?

  • new一个继承下来的方法和override一个继承方法有何区别?

  • int i和int i = new int()有什么不同? 

  2. 基本概念

  一般说来,new关键字在.NET中用于以下几个场合,这是MSDN的典型解释:

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

  本文的重点内容,本文在下一节来重点考虑。

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

  作为修饰符,基本的规则可以总结为:实现派生类中隐藏方法,则基类方法必须定义为virtual;new作为修饰符,实现隐藏基类成员时,不可和override共存,原因是这两者语义相斥:new用于实现创建一个新成员,同时隐藏基类的同名成员;而override用于实现对基类成员的扩展。

  另外,如果在子类中隐藏了基类的数据成员,那么对基类原数据成员的访问,可以通过base修饰符来完成。  

  例如:

new作为修饰符

  • 作为约束,用于在泛型声明中约束可能用作类型参数的参数的类型。 

  MSDN中的定义是:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。当泛型类创建类型的新实例时,将此约束应用于类型参数。

  注意:new作为约束和其他约束共存时,必须在最后指定。

  其定义方式为:


class Genericer<T> where T : new()
{
public T GetItem()
{
return new T();
}
}

  实现方式为:

 

Code

Code

  • 使用new实现多态。 这不是我熟悉的话题,详细的内容可以参见 《多态与 new [C#]》,这里有较详细的论述。

[第1页][第2页]
1
0
标签:.NET 关键字 new

热门文章

    最新文章

      最新新闻

        热门新闻