型パラメータ '<typeparametername1>' は、型パラメータ '<typeparametername2>' の 'New' 制約を満たすために 'New' 制約または 'Structure' 制約が必要です。
更新 : 2007 年 11 月
New 制約を満たさない型パラメータを渡すジェネリック型が、ステートメントで作成されています。
New 制約は、型パラメータに渡される型引数が、オブジェクトを作成するコードからアクセスできるパラメータなしのコンストラクタを公開する必要があることを意味します。値型には常にパラメータなしのコンストラクタがありますが、参照型にはパラメータなしのコンストラクタがあるとは限りません。したがって、Structure 制約は、New 制約を満たしますが、Class 制約、つまりクラス名またはインターフェイス名は New 制約を満たしません。
このエラーは次のようなコードで発生します。
Public Class c1(Of t As New)
End Class
Public Class c2(Of u)
Public testObject As New c1(Of u)
End Class
クラス c2 がオブジェクトを c1 から作成するときに、型パラメータ u は型パラメータ t の New 制約を満たしません。
Error ID: BC32084
このエラーを解決するには
ジェネリック型に渡す型パラメータが Structure 制約または New 制約を満たす場合に、適切な制約が定義に追加されます。
Public Class c2(Of u As Structure)
型パラメータが Structure 制約または New 制約を満たすことができない場合、型パラメータはジェネリック型に渡されません。他のものを型引数として渡す必要があります。