-9

誰でも次のコードを詳しく説明してください。

internal class InternalClientProxy<TInterface> : 
    ClientBase<TInterface> where TInterface : class
4

3 に答える 3

1

これはジェネリック型の制約です。この場合

where T : class

Tは参照型でなければならないことを示します。

制約の詳細については、こちらを参照してください:型パラメーターの制約(C#プログラミングガイド)

于 2012-09-02T08:37:33.827 に答える
1

つまり、参照型のみを使用できますInternalClientProxy

理解を深めるためのいくつかの便利なリンク

MSDN1 MSDN2

于 2012-09-02T08:37:58.207 に答える
1

私のコメントをフォローアップするために、ドキュメントで構文が説明されています。

タイプパラメータの制約(C#プログラミングガイド)

ジェネリッククラスを定義する場合、クライアントコードがクラスをインスタンス化するときに型引数に使用できる型の種類に制限を適用できます。クライアントコードが制約で許可されていない型を使用してクラスをインスタンス化しようとすると、コンパイル時エラーが発生します。これらの制限は制約と呼ばれます。制約は、wherecontextualキーワードを使用して指定されます。次の表に、6種類の制約を示します。

..。

where T : classtype引数は、参照型である必要があります。これは、すべてのクラス、インターフェイス、デリゲート、または配列型にも当てはまります。

TInterface制約がないと、ジェネリックコードは、値を表すか参照型を表すかに応じて、(とりわけ)異なる動作をする可能性があります。

于 2012-09-02T08:38:49.570 に答える