c# 之 new 关键字

1、实例化变量

DataTable dt  = new  DataTable();

2、调用构造函数

class CoOrds
{
    public int x, y;
    // 实例构造函数(默认构造函数)
    public CoOrds()
    {
        x = 0;
        y = 0;
    }
    // 具有两个参数的构造函数
    public CoOrds(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
    // 重写toString方法
    public override string ToString()
    {
        return (String.Format("({0},{1})", x, y));
    }
    static void Main(string[] args)
    {
        CoOrds p1 = new CoOrds();
        CoOrds p2 = new CoOrds(5, 3);

        // 使用重写ToString方法显示结果
        Console.WriteLine("CoOrds #1 at {0}", p1);
        Console.WriteLine("CoOrds #2 at {0}", p2);
        Console.ReadKey();
    }
}

/* Output:
 CoOrds #1 at (0,0)
 CoOrds #2 at (5,3)        
*/

3、修饰一个方法

 protected new void OnResize(EventArgs e)
        {
            Invalidate();
        }

4、泛型声明中用于对泛型参数的约束

public sealed class Singleton<T> where T : new() 
补充:

在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束:

约束
说明
T:结构
类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可以为 null 的类型(C# 编程指南)。

T:类
类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。

T:new()
类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必须最后指定。

T:<基类名>
类型参数必须是指定的基类或派生自指定的基类。

T:<接口名称>
类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。

T:U
为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。这称为裸类型约束

猜你喜欢

转载自www.cnblogs.com/macT/p/9952851.html