C where泛型約束

2021-09-23 19:13:22 字數 1309 閱讀 8081

最近無意中看到了:但是,人笨啊,木有看懂到底是啥意思,木辦法自己寫乙個試試吧,權當做個筆記

例子如下:

介面:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace wheretest

string getname();

/*介面中只能包含方法、屬性、索引器和事件的宣告。

* 不允許宣告成員上的修飾符,即使是pubilc都不行,因為介面成員總是公有的,也不能宣告為虛擬和靜態的。

* 如果需要修飾符,最好讓實現類來宣告。*/}

}

介面實現:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace wheretest

private string fruitname;

string ifruit.fruitname

set}

string ifruit.getname()}}

建立乙個帶有泛型約束的類:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace wheretest

", item.getname()));

console.readkey();

}/*在定義泛型類時,可以對客戶端**能夠在例項化類時用於型別引數的型別種類施加限制。

* 如果客戶端**嘗試使用某個約束所不允許的型別來例項化類,則會產生編譯時錯誤。*/}}

由於有where字句的泛型約束,所以,建立fruitmarket的物件時,t的型別只能是繼承自ifruit介面的類。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace wheretest}}

執行結果:

本文僅僅是乙個用法案例,具體的詳細內容,請參照:

測試**如下:

C where泛型約束

最近無意中看到了 但是,人笨啊,木有看懂到底是啥意思,木辦法自己寫乙個試試吧,權當做個筆記 例子如下 介面 using system using system.collections.generic using system.linq using system.text namespace wher...

c 泛型約束

在定義泛型類時,可以對客戶端 能夠在例項化類時用於型別引數的型別種類施加限制。如果客戶端 嘗試使用某個約束所不允許的型別來例項化類,則會產生編譯時錯誤。這些限制稱為約束。約束是使用 where 上下文關鍵字指定的。下表列出了六種型別的約束 約束說明 t struct 型別引數必須是值型別。可以指定除...

泛型型別約束

where 泛型型別約束 c 參考 visual studio 2015 其他版本 在泛型型別定義中,where 子句用於指定對下列型別的約束 這些型別可用作泛型宣告中定義的型別引數的實參。例如,可以宣告乙個泛型類 mygenericclass,這樣,型別引數 t 就可以實現 icomparable...