where泛型約束

2021-09-05 16:34:00 字數 734 閱讀 6536

where用於指定型別約束,這些約束可以作為泛型宣告中定義的型別引數的變數.如下:

public class mygenericclasswhere t:icomparable

除了介面約束,where還可以包括基類約束,以指出某個型別必須將指定的類作為基類(或者就是該類本身),才能用作該泛型的型別引數.如下:

class myclassy

where t : class

where u : struct

where還可以包括建構函式約束,可以使用new運算子建立型別引數的例項;但型別引數必須受建構函式約束new()的約束.new()約束可以讓編譯器知道:提供的任何型別引數都必須具有可訪問的無引數建構函式,如下:

public class mygenericclass where t: icomparable, new()

對於多個型別引數,每個型別引數都使用乙個where,例如:

class dictionary

where tkey: icomparable, ienumerable

where tval: myi

} 還可以將約束附加到泛型方法的型別引數,例如:

public bool mymethod(t t) where t : imyinte***ce

注意:對於委託和方法兩者來說,描述型別引數約束的語法是一樣的:

delegate t mydelegate() where t : new()

C 泛型 WHERE 約束

where 子句用於指定對下列型別的約束 這些型別可用作泛型宣告中定義的型別形參的實參。public class mygenericclass t wheret icomparable t實現icomparable介面 public void request listentitylist where...

where(泛型型別約束)

定義 在定義泛型的時候,我們可以使用 where 限制引數的範圍。使用 在使用泛型的時候,你必須尊守 where 限制引數的範圍,否則編譯不會通過。net支援的型別引數約束 where t struct t必須是乙個結構型別 where t class t必須是乙個class型別 where t n...

C 泛型方法Where 約束

where 泛型型別約束 定義 在定義泛型的時候,我們可以使用where限制引數的範圍。使用 在使用泛型的時候,你必須尊守where限制引數的範圍,否則編譯不會通過。六種型別的約束 t 類 型別引數必須是引用型別 這一點也適用於任何類 介面 委託或陣列型別。class myclasswhere t ...