日期:2014-05-16  浏览次数:20832 次

C#中new关键字的用法
C#中关于new的几种用法里,只会用new来调用构造函数和用new来调用基类的虚方法,其他的用法不是很明白,请教大神啊!!!!
------解决方案--------------------
想想new在英文里是什么意思,你就能明白的差不多了。
用new那不叫调用基类的虚方法,那叫新写一个方法用来覆盖,只是覆盖,连重写都算,要是调用不慎还是会调用到原来基类的方法。
------解决方案--------------------
(1)new 运算符 用于创建对象和调用构造函数。 
(2)new 修饰符 用于隐藏基类成员的继承成员。 
(3)new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。

new 运算符 
1.用于创建对象和调用构造函数 
例:Class_Test MyClass = new Class_Test(); 
2.也用于为值类型调用默认的构造函数 
例:int myInt = new int(); 
myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0; 
3.不能重载 new 运算符。 
4.如果 new 运算符分配内存失败,则它将引发 OutOfMemoryException 异常。 

new 修饰符 
使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。
------解决方案--------------------
引用:
隐藏基类成员能不能举个例子啊,不是很理解哎

重写它就行了
------解决方案--------------------
可以说是这样的,new()的是新的空间地址。可以相当于在银行新开了户头。
------解决方案--------------------
引用:
Quote: 引用:

隐藏基类成员能不能举个例子啊,不是很理解哎

重写它就行了

有时不一定能重写的。我一般拿做比无聊的事。比如
   
 class a
    {
        public a me { get { return this; } }
    }
    class b : a
    {
        public new b me { get { return  (b)base.me; } }
    }