• 读你必须知道的.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

  • 相关阅读:
    一.创建型模式 Factory
    Tcp/Ip I/O函数
    Tcp/Ip协议理解_简单实例
    Tcp/Ip协议理解_3
    Tcp/Ip协议理解_2
    Tcp/Ip协议理解_1
    abp+angular+bootstrap-table的使用
    Abp mvc angular 添加视图
    Abp添加菜单
    JS 获取一串路径中的文件名称
  • 原文地址:https://www.cnblogs.com/Ribbon/p/2937298.html
Copyright © 2020-2023  润新知