• new的深一步


    new的深一步

    new运算符

    用于创建对象和条用构造函数

    new修饰符

    用于隐藏基类中被继承的成员

    new约束

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

    new运算符

    用于创建对象和调用构造函数。例如:

    ClassDemo obj=new ClassDemo();

    还可以用于创建匿名类型的实例。例如:

    var query=from cust in customers

             select new {Name=cust.Name,Addres=cust.PrimaryAddress};

    还用于调用值类型的默认构造函数。例如:

    int i=new int();

    注意:为结构声明默认的构造函数是错误的,因为每一个值类型都隐式具有一个公共的默认构造函数。可以在结构类型上声明参数化构造函数以设置其初始值,但是,只有在需要默认值之外的值时才必须这么做。

    值类型对象(例如结构)是在堆栈上创建的,而引用类型对象(例如类)是在堆上创建的。两种类型的对象都是自动销毁的,但是,基于值类型的对象是在超出范畴时销毁,而基于引用类型的对象则是在该对象的最后一个引用被移除之后在某个不确定的时间销毁。对于占用固定资源(例如大量内存、文件句柄或网络连接)的引用类型,有时需要使用确定性终止以确保对象被尽快销毁。

    不能重载new运算符。

    如果new运算符分配内存失败,将引发异常OutOfMemoryException.

    new修饰符

    用作隐藏基类中的成员(是基类中的成员,所以字段、属性、时间等等都可以隐藏,不单单是方法)例如:

    public class Base

    {

       public void WriteName(string name)

             {

                       Console.WriteLine(name);

             }

    }

    public class Car:Base

    {

             //用new隐藏基类中的方法

             public new void WriteName(string name)

                       {

                                Console.WriteLine("车名:"+name);

                       }

    }

    注意:new修饰符只能用于继承类,一般用于弥补基类设计的不足。

          new修饰符和override修饰符不可同时在一个成员上,因为这两个修饰符在含以上互相排斥。

    new约束

    new约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。如果要使用new约束,则该类型不能为抽象类型。

    当泛型类创建类型的新实例,请将new约束应用与类型参数。例如:

    class ItemFactory<T> where T:new()

    {

             public T GetNewItem()

             {

                       return new T();

             }

    }

    当与其他约束一起使用时,new()约束必须最后指定:

    public class ItemFactory2<T>

                       where T:IComparable,new()

    {

    }

  • 相关阅读:
    udev文件系统的使用和基本工作原理分析
    ARM平台上蓝牙协议栈Bluez的移植使用和配置
    udev文件系统的使用和基本工作原理分析
    ARM平台上蓝牙协议栈Bluez的移植使用和配置
    Linux 下用户空间与内核空间数据交换的方式
    详解Linux2.6内核中基于platform机制的驱动模型
    IOS怎么判断网络连接
    ios 设备方向判断
    IOS加解密
    用代码向网站提交数据
  • 原文地址:https://www.cnblogs.com/Zbuxu/p/5681650.html
Copyright © 2020-2023  润新知