最近無意中看到了:但是,人笨啊,木有看懂到底是啥意思,木辦法自己寫乙個試試吧,權當做個筆記
例子如下:
介面:
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...