1. 程式人生 > >c# 之 new 關鍵字

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 提供的引數。這稱為裸型別約束