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

  • 相关阅读:
    java中文件的读取和写入
    ==与equal在java中应用的感悟
    Gson心得小笔记
    几种排序的算法
    HttpClient的使用方法
    StringBuffer
    laravel5.5容器
    常用会话管理方式
    css一些事儿
    关于时间的梳理
  • 原文地址:https://www.cnblogs.com/Ribbon/p/2937298.html
Copyright © 2011-2022 走看看