「どこ」制約とは
の 'どこ' 制約は、ジェネリック型が表現できる型パラメーターを開発者が指定できるようにする C# のジェネリック型制約です。制約は、 'どこ' キーワードの後に型パラメーターと制約が続く、を使用するための構文 'どこ' 制約は次のとおりです。
パブリック クラス ClassName < T > ここで T : 制約{
// クラスの実装
}
ここで 'クラス名' ジェネリック型パラメーターを持つクラスの名前を表します 「た」 .の 'どこ' キーワードは型パラメーターの制約を指定し、 「制約」 型パラメーターが表す必要がある型です。
型パラメーターを受け取り、値の配列から最小値を返すジェネリック クラスの例を見てみましょう。ここで、コードは 'どこ' 型パラメーターが数値型でなければならないことを指定する制約:
システムの使用 ;
パブリック クラス MinValue < T > ここで T : 構造体 、 IComparable 、 Iコンバーチブル
{
public T GetMinValue ( T [ ] 配列 )
{
もしも ( 配列 == ヌル || 配列。 長さ == 0 ) {
新しい ArgumentException をスローする ( 「配列を null または空にすることはできません」 ) ;
}
T 分 = 配列 [ 0 ] ;
ために ( 整数 私 = 1 ; 私 < 配列。 長さ ; 私 ++ ) {
もしも ( 配列 [ 私 ] . 比較対象 ( 分 ) < 0 ) {
分 = 配列 [ 私 ] ;
}
}
戻る 分 ;
}
}
公開授業 プログラム
{
公共 静的 空所 主要 ( )
{
整数 [ ] intArray = { 1 、 2 、 3 、 4 、 5 } ;
最小値 < 整数 > intMinValue = 新しい最小値 < 整数 > ( ) ;
整数 intMin = intMinValue。 GetMinValue ( intArray ) ;
コンソール。 書き込み行 ( 'intArray の最小値: {0}' 、 intMin ) ;
ダブル [ ] doubleArray = { 1.1 、 2.2 、 3.3 、 4.4 、 5.5 } ;
最小値 < ダブル > doubleMinValue = 新しい最小値 < ダブル > ( ) ;
ダブル doubleMin = doubleMinValue。 GetMinValue ( doubleArray ) ;
コンソール。 書き込み行 ( 'doubleArray の最小値: {0}' 、 doubleMin ) ;
}
}
ここでは、ジェネリック クラスを定義しました。 「最小値」 型パラメータを受け入れる 「た」 値の配列から最小値を返します。次に、 'どこ' 制約を使用して、型パラメーターが構造体でなければならないことを指定し、IComparable インターフェイスを実装し、IConvertible インターフェイスを実装します。この制約により、数値型のみが型パラメーターとして許可されることが保証されます。
結論
の 'どこ' C# の制約は、開発者が型の安全性を強制し、実行時のエラーを防止できるようにする強力な機能です。この制約を使用すると、ジェネリック型パラメーターが表現できる型のセットを指定できます。この記事では、 'どこ' C# の制約を示し、コードでそれを使用する方法を示しました。