new的不同用法:
㈠new 运算符    用于创建对象和调用构造函数。
例如:
①Class1 o  = new Class1();
②还可用于创建匿名类型的实例:
var query = from cust in customers select new {Name = cust.Name, Address = cust.PrimaryAddress};
③new 运算符还用于调用值类型的默认构造函数。例如:
int i = new int();
 在上一个语句中,i 初始化为 0,它是 int 类型的默认值。该语句的效果等同于: int i = 0;
㈡new 修饰符
用于向基类成员隐藏继承成员。
在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员时,该成员的派生版本将替换基类版本。虽然可以在不使用 new 修饰符的情况下隐藏成员,但会生成警告。如果使用 new 显式隐藏成员,则会取消此警告,并记录要替换为派生版本这一事实。
using System;
public class Myclass
{
    public static void  F()
    {
        Console.WriteLine("Myclass:F");
    }
    public static void  FF()
    {
        Console.WriteLine("Myclass:FF");
    }
}
public class Myclass1 : Myclass
{
    new public static void F()
    {
        Console.WriteLine("Myclass1:F");
    }
    static void Main()
    {
        Myclass1.F();
        Myclass1.FF();
        Myclass.F();
        Myclass.FF();
    }
}
执行结果:
        //Myclass1:F
        //Myclass:FF
        //Myclass:F
        //Myclass:FF
㈢new 约束
用于在泛型声明中约束可能用作类型参数的参数的类型。
new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。当泛型类创建类型的新实例时,将此约束应用于类型参数,如下面的示例所示:
class ItemFactory<T> where T : new()
{
    public T GetNewItem()
    {
        return new T();
    }
}
当与其他约束一起使用时,new() 约束必须最后指定:
using System;
public class ItemFactory<T>
    where T : IComparable, new()
{
}