zoukankan      html  css  js  c++  java
  • 读你必须知道的.NET(五)

    一般来说,new关键字可作为运算符,用于创建对象和调用构造函数,可作为修饰符,用于向基类成员隐藏继承成员。作为修饰符,new实现派生类中隐藏方法,则基类方法必须定义为virtual,new作为修饰符,实现隐藏基类成员时,不可与override共存,new用于实现创建一个新成员,同时隐藏基类的同名成员,而override用于实现对基类成员的扩展。如果在子类中隐藏了基类的数据成员,那么对基类原数据成员的访问,可以通过base来完成。new可做为约束,用于在泛型声明中约束可能用作类型参数的参数的类型。

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

    定义:

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

    new可以用在多态中,http://www.cnblogs.com/allenlooplee/archive/2006/03/13/348760.html

    new一个class时,new完成了以下两个方面的内容:一是调用newobj命令来为实例在托管堆中分配内存;二是调用构造函数来实现对象初始化。   

    new一个struct时,new运算符用于调用其带构造函数,完成实例的初始化。   

    new一个int时,new运算符用于初始化其值为0。   

    另外必须清楚,值类型和引用类型在分配内存时是不同的,值类型分配于线程的堆栈(stack)上,并变量本身就保存其实值,因此也不受GC的控制,而引用类型变量,包含了指向托管堆的引用,内存分配于托管堆(managed heap)上,内存收集由GC完成。 

    new运算符不可重载。   

    new分配内存失败,将引发OutOfMemoryException异常。

    对于基本类型来说,使用new操作符来进行初始化的好处是,某些构造函数可以完成更优越的初始化操作,而避免了不高明的选择。

    http://www.cnblogs.com/anytao/archive/2007/04/28/must_net_05.html

  • 相关阅读:
    [2019南昌邀请赛网络赛D][dp]
    [ Educational Codeforces Round 65 (Rated for Div. 2)][二分]
    [hdoj5927][dfs]
    [cf1140D. Minimum Triangulation][dp]
    [hdoj6483][莫队+线段树/ST]
    使用GAC加速 解决CSP问题 Kakuro
    UVA 11427 Expect the Expected
    UVA 11021 Tribles
    UVA 11174 Stand in a Line 树上计数
    《算法概论》第八章的一些课后题目 关于NP-Complete Problem
  • 原文地址:https://www.cnblogs.com/Ribbon/p/2937298.html
Copyright © 2011-2022 走看看