5

ジェネリック クラスを定義するときに、"class" と "new()" の両方の制約を設定することに意味があるかどうか疑問に思っています。次の例のように:

class MyParanoidClass<T> where T : class, new()
{
 //content
}

どちらの制約も、 T が参照型であることを指定しています。「クラス」制約は、暗黙的なコンストラクターが存在することを意味しませんが、「new()」制約は、追加のパブリック コンストラクター定義を持つ「クラス」を必要とします。

私の最後の(の定式化)質問は、上記のステートメントのようにジェネリッククラスを定義することから何か利点がありますか、それとも「new()」は両方の制約をカプセル化しますか?

4

2 に答える 2

1

いいえ、役に立たないわけではありません。

最初のパラメータークラスは、型引数が、クラス、インターフェイス、デリゲート、または配列型を含む参照型である必要があることを保証します。

一方、2 番目のパラメーターnew()は、パラメーターのないデフォルト コンストラクターを確実に持ちます。パラメーターのないデフォルトのコンストラクターを持たないクラスでは機能しません。

于 2013-07-16T15:26:45.817 に答える