型パラメーター '<型パラメーター名 1>' には、型パラメーター '<型パラメーター名 2>' の 'New' 制約を満たすために 'New' 制約または 'Structure' 制約が必要です

ステートメントで、 New 制約を満たすために制約されていない型パラメーターを渡すジェネリック型を構築します。

New 制約は、その型パラメーターに渡される型引数が、そこからオブジェクトを作成するコードにアクセス可能なパラメーターのないコンストラクターを公開する必要があることを意味します。 すべての値型にパラメーターのないコンストラクターがありますが、すべての参照型にあるわけではありません。 そのため、 Structure 制約は New 制約を満たしていますが、 Class 制約や、クラスまたはインターフェイスの名前はこの制約を満たしていません。

次のステートメントでは、このエラーが生成される可能性があります。

Public Class c1(Of t As New)
End Class
Public Class c2(Of u)
    Public testObject As New c1(Of u)
End Class

クラス c2c1からオブジェクトを作成する場合、型パラメーター u は型パラメーター Newt制約を満たしていません。

エラー ID: BC32084

このエラーを解決するには

  • ジェネリック型に渡される型パラメーターが Structure または New の制約を満たすことができる場合は、その定義に適切な制約を追加します。

    Public Class c2(Of u As Structure)
    
  • 型パラメーターが Structure または New の制約を満たすことができない場合は、ジェネリック型にこれを渡しません。 型引数として他のものを渡す必要があります。

関連項目