C# new运算符

一、C# new运算符

1. 用于创建对象和调用构造函数。

例如:

Class_Test obj = New Class_Test();

2. 用于为值类型调用默认的构造函数。

例如:

int myInt = New int();上述语句中,myInt初始化为0,它是int类型的默认值。该语句的效果等同于:

int myInt = 0;

3. 不能重载new运算符。

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

 

二、在C#中,new关键字可用作运算符、修饰符或约束。

new运算符:用于创建对象和调用构造函数。

new修饰符:用于向基类成员隐藏继承成员。

new修饰符

在用作修饰符时,new关键字可以显式隐藏从基类继承的成员。隐藏继承的成员时,该成员的派生版本将替换基类版本。虽然可以在不使用new修饰符的情况下隐藏成员,但会生成警告。如果使用new显示隐藏成员,则会取消此名警告,并记录要替换为派生版本这一事实。

对同一成员同时使用new和override是错误的做法,因为这两个修饰符的含义互斥。new修饰符会用同样的名称创建一个新成员并使原始成员变为隐藏的。override修饰符会扩展继承成员的实现。

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

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

1.当泛型类创建类型的新实例,请将new约束应用于类型参数。

复制代码
class ItemFactory<T> where T : new()
{
    public T GetNewItem()
    {
        return new T();
    }
}
复制代码

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

public class ItemFactory2<T> where T : IComparable, new()
{
    \... ...
}
原文地址:https://www.cnblogs.com/melao2006/p/4239498.html