在 C# 中,new 关键字可用作运算符、修饰符或约束。
new 运算符
用于创建对象和调用构造函数。例如:

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

new 修饰符
在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。在不使用 new 修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new 显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new 修饰符修饰该成员。例如:
public
class
BaseC
{
public int x;
public void Invoke() {}
}
public class DerivedC : BaseC
{
new public void Invoke() {}
}
{
public int x;
public void Invoke() {}
}
public class DerivedC : BaseC
{
new public void Invoke() {}
}
new Constraint
new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。当泛型类创建类型的新实例时,将此约束应用于类型参数,如下面的示例所示:
当与其他约束一起使用时,new() 约束必须最后指定:
using
System;
public class ItemFactory < T >
where T : IComparable, new ()
{
}
public class ItemFactory < T >
where T : IComparable, new ()
{
}