C#の場所(ジェネリック型の制約)

オリジナル: C#WHERE(ジェネリック型の制約)

定義:の定義ではジェネリック医薬品、我々は使用することができます  どこ  制限パラメータの範囲を。

使用:使用ジェネリックの時間は、あなたが尊重しなければならない   制限パラメータ範囲のを、またはコンパイラは渡しません。

 

制約の6種類:

T:クラス(タイプパラメータが参照型である必要があり、これは、任意のクラス、インタフェース、デリゲート、またはアレイタイプに適用されます。)

    MyClassのクラス<T、U> 
        WHERE T:クラスパラメータT ///制約は、 "参照タイプは{}"しなければならない
        WHERE U:U構造体///制約パラメータは、 "値型"でなければなりません
    } {

T:構造(値型パラメータでなければならないタイプNULL可能にタイプ以外の任意の値を指定することができます。)

    MyClassのクラス<T、U> 
        WHERE T:クラスパラメータT ///制約は、 "参照タイプは{}"しなければならない
        WHERE U:U構造体///制約パラメータは、 "値型"でなければなりません
    } {

T:新新() 他の制約と組み合わせて使用するタイプのパラメータは、無料の公共コンストラクタのパラメータを持っている必要があり、新しい()制約は、最後に指定する必要があります。)

クラスにEmployeeList <T> T:従業員、IEmployee、System.IComparable <T>、新しい()
{ 
    // ... 
}

T:<基本クラス名>(typeパラメータは、基本クラスで指定された、または指定された基底クラスから派生しなければなりません。)

パブリッククラスEmployee {} 

publicクラスGenericList <T> T:従業員

T:<インタフェース名>(Typeパラメータは、インターフェイスを指定またはインタフェースが一般的で制約があってもよい複数のインタフェースを指定することができる指定されたインタフェースを実装しなければなりません)

コードをコピー
    /// <要約> 
    ///接口
    /// </要約> 
    インターフェイスIMyInterfaceという
    { 
    } 

    /// <要約> 
    ///定义的一个字典类型
    /// </要約> 
    /// <typeparam名=」処理鍵"> </ typeparam> 
    /// <typeparam名=" TVAL "> </ typeparam> 
    クラス辞典<処理鍵、TVAL> 
        どこ処理鍵:IComparableを、IEnumerableを
        IMyInterfaceという:TVALどこ
    { 
        公共ボイドは(処理鍵キー、TVALのval)を追加します。
        { 
        } 
    }
コードをコピー

T:U(パラメータ・タイプパラメータTはU-提供またはUのために提供されるパラメータに由来するために提供されなければならない。T及びUのパラメータが同じでなければならないこと

クラスリスト<T> 
{ 
    ボイド追加<U>(一覧<U>項目)ここで、U:T {/*...*/} 
}

 

まず、クラスを使用することができます:

パブリッククラスMyGenericClass <T> T:IComparableを{}

第二に、この方法を使用することができます。

パブリックブールMyMethodは<T>(T T)ここで、T:IMyInterfaceという{}

第三に、欧州委員会は、次の目的で使用できます。

デリゲートT MyDelegate <T>()ここで、T:新しいです()

おすすめ

転載: www.cnblogs.com/lonelyxmas/p/11286115.html