泛型委託:
1view codenamespace
泛型委託216
#region 泛型委託
17public
static
void m1(int
msg)
1821
public
static
void m2(double
msg)
2225
public
static
void m3(float
msg)
2629
public
static
void m4(string
msg)
3033
public
static
void
m5(person msg)
3437
#endregion38}
39class
person ;
4041 }
1系統內建的泛型委託class
program2;
8 list listresult = list.findall(n => n > 4);9
for (int i = 0; i < listresult.count; i++)
1013
console.readkey();14}
1516 }
1view codeclass
program2;
10 md(3,4
);11
console.readkey();
1213
//當需要儲存帶返回值的方法的時候,就需要使用另外乙個泛型委託func
14 func md1 = () =>system.datetime.now.toshortdatestring();
15console.writeline(md1());
16console.readkey();
17#endregion
1819}20
21 }
泛型約束
1view code#region 泛型約束2//
表示使用泛型約束,約束了t只能是值型別
3class myclasswhere t : struct47
//表示引用型別使用泛型約束,約束了t只能是引用型別
8class myclass2where t : class912
//限制了t必須是實現了某個介面的型別,要求t必須是實現了icomparable介面的型別或者是子型別
13class myclass3where
t : icomparable
1417
//要求t必須是person型別,或者是person類的子型別
18class myclass4where
t : person
1922
//要求t必須是person型別,或者是person類的子型別,而且t必須具有乙個無參的建構函式
23class myclass524
where
t : person
25where t : new
()26
29//
要求v必須是t型別或者t的子型別
30class myclass6where
v : t
3134
35class
person ;
36#endregion
泛型及約束
程式中經常會用到泛型,如 class program,b a,b change ref a,ref b console.writeline after change,a b a,b console.readkey static void change ref t a,ref t b 但有時候會碰到類...
c 泛型約束
在定義泛型類時,可以對客戶端 能夠在例項化類時用於型別引數的型別種類施加限制。如果客戶端 嘗試使用某個約束所不允許的型別來例項化類,則會產生編譯時錯誤。這些限制稱為約束。約束是使用 where 上下文關鍵字指定的。下表列出了六種型別的約束 約束說明 t struct 型別引數必須是值型別。可以指定除...
C 泛型約束
約束告知編譯器型別引數必須具備的功能。在沒有任何約束的情況下,型別引數可以是任何型別。編譯器只能假定 system.object 的成員,它是任何 net 型別的最終基類。有關詳細資訊,請參閱使用約束的原因。如果客戶端 嘗試使用約束所不允許的型別來例項化類,則會產生編譯時錯誤。通過使用where上下...