where 關鍵字用法

2021-09-30 07:11:39 字數 1264 閱讀 3202

# where子句***

where 子句用於指定型別約束,這些約束可以作為泛型宣告中定義的型別引數的變數。

1.介面約束。

例如,可以宣告乙個泛型類

mygenericclass

,這樣,型別引數

t就可以實現 icomparable介面:

public

class

mygenericclass

<

t>

where t:icomparable

2.基類約束:指出

某個型別必須將指定的類作為基類(或者就是該類本身)

,才能用作該泛型型別的型別引數。

這樣的約束一經使用,就必須出現在該型別引數的所有其他約束之前。

class

myclassy

<

t, u

>

where t :

class

where u :

struct

3.where 子句還可以包括建構函式約束。

可以使用 new 運算子建立型別引數的例項;但型別引數為此必須受建構函式約束 new() 的約束。new() 約束可以讓編譯器知道:提供的任何型別引數都必須具有可訪問的無引數(或缺省)建構函式。例如:

public

class

mygenericclass

<

t>

where t: icomparable,

new()

new() 約束出現在 where 子句的最後。

4.對於多個型別引數,每個型別引數都使用乙個 where 子句,

例如:

inte***ce

myi

class

dictionary

<

tkey,tval

>

where tkey: icomparable, ienumerable

where tval: myi}

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

public

bool

mymethod

<

t>

(t t) where t : imyinte***ce

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

delegate

t mydelegate

<

t>

() where t :

new()

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...

c 學習之關鍵字where

where 子句用於指定型別約束,這些約束可以作為泛型宣告中定義的型別引數的變數。1.介面約束。例如,可以宣告乙個泛型類 mygenericclass,這樣,型別引數 t 就可以實現 icomparable介面 public class mygenericclasswhere t icomparab...

const關鍵字用法

1 const常量 如const int max 100 優點 const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換時可能會產生意料不到的錯誤 邊際效應 2 const修飾類的資料成員 class a const...