C 高階程式設計個人筆記搬運 六(泛型 方法)

2021-10-09 06:28:09 字數 1033 閱讀 2081

不僅介面、類和結構可以是泛型的,方法也可以是泛型的。在泛型方法中,泛型型別用方法宣告來定義。泛型方法可以在泛型型別中定義。swap()方法把t定義為泛型型別,該型別用於兩個引數金額乙個變數temp:

void swap(ref t x, ref t y)

把泛型型別賦予方法的呼叫,就可以呼叫泛型方法:

int i = 4;

int j = 5;

swap(ref i, ref j);

但是,因為c#編譯器會通過呼叫swap()方法來獲取引數的型別,所以不需要把泛型型別賦予方法呼叫。泛型方法可以像非泛型方法那樣呼叫。比如:swap(ref i, ref j); 這樣呼叫,而不需要指定。

需要的注意的是t只代表一種型別,例如:

class program

public static int ddd(t x, t y)

}

如果你是對於不同的引數型別進行的傳值,那麼你可以告訴編譯器,你有不同的型別,比如:

class program

public static int ddd(t1 x, t2 y)

}

除了泛型類可以帶約束,泛型方法同樣是可以帶有約束的。例如我們可以約束t1:

public class class1

public class1(string u)

public static int x =10;

public int y = 11;

public string i = "aaa";

public static string j = "bbb";

public double k;

}class program

// 我們給泛型方法做乙個約束,約束t1必須是繼承於class1的

public static int ddd(t1 x, t2 y) where t1:class1

}

我們接著談帶委託的泛型方法。

《C 高階程式設計》之泛型 1建立泛型類

net自從2.0版本開始就支援泛型。閒話休提,馬上來看下非泛型的簡化鍊錶類,它可以包含任意型別的物件。linkedlistnode.cs中 在鍊錶中,乙個元素引用另乙個元素,所以必須建立乙個類,將其封裝在鍊錶中,並引用下乙個物件。1 public class linkedlistnode27 8pu...

c 高階之路 泛型(筆記2)

方法傳參 核心 推遲一切可也推遲的宣告 一 object 1 利用物件導向的封裝 繼承 多型 object是所有的父類 因此可以把任何變數都當做object傳入 2 子類可以運用父類的所有方法和屬性 3 但是會有一次裝箱拆箱的操作 會造成效能損失 二 泛型 1 申明 public static vo...

C (泛型程式設計)學習筆記 4

1.函式const char c str c str 函式返回乙個指向正規c字串的指標,內容與本string串相同.這是為了與c語言相容,在c語言中沒有string型別,故必須通過string類物件的成員函式c str 把string 物件轉換成c中的字串樣式。2.sscanf 與scanf 類似,...