where 子句用於指定型別約束,這些約束可以作為泛型宣告中定義的型別引數的變數。
1.介面約束。
例如,可以宣告乙個泛型類 mygenericclass,這樣,型別引數 t 就可以實現 icomparable介面:
public class mygenericclasswhere t:icomparable
2.基類約束:指出某個型別必須將指定的類作為基類(或者就是該類本身),才能用作該泛型型別的型別引數。
這樣的約束一經使用,就必須出現在該型別引數的所有其他約束之前。
class myclassy
where t : class
where u : struct
3.where 子句還可以包括建構函式約束。
可以使用 new 運算子建立型別引數的例項;但型別引數為此必須受建構函式約束 new() 的約束。new() 約束可以讓編譯器知道:提供的任何型別引數都必須具有可訪問的無引數(或缺省)建構函式。例如:
public class mygenericclass where t: icomparable, new()
new() 約束出現在 where 子句的最後。
4.對於多個型別引數,每個型別引數都使用乙個 where 子句,
例如:inte***ce myi
class dictionary
where tkey: icomparable, ienumerable
where tval: myi
}5.還可以將約束附加到泛型方法的型別引數,例如:
public bool mymethod(t t) where t : imyinte***ce
請注意,對於委託和方法兩者來說,描述型別引數約束的語法是一樣的:
delegate t mydelegate() where t : new()
where 關鍵字用法
where子句 where 子句用於指定型別約束,這些約束可以作為泛型宣告中定義的型別引數的變數。1.介面約束。例如,可以宣告乙個泛型類 mygenericclass 這樣,型別引數 t就可以實現 icomparable介面 public class mygenericclass t where t...
C 關鍵字學習
static 限定了被宣告的方法或屬性的訪問方式,只能通過類名進行訪問。private 限定了被宣告的方法或屬性的作用域,僅限被本類內的成員進行訪問,無法通過類或該類物件直接訪問。儲存區別 static宣告的成員被稱為類成員,即該成員屬於該類所有的該類成員都共享這一塊記憶體,不會隨著每個物件的建立而...
Swift語法 where關鍵字詳解
在swift語法裡where關鍵字的作用跟sql的where一樣,即附加條件判斷。1 在集合遍歷時使用where,條件為真時執行 塊,為假時不執行 塊。let array 0,1,2,3,4,5,6 使用switch遍歷 array.foreach 使用for in遍歷 for value in a...