メソッド '<methodname>' に、デリゲート <'delegatename'> と互換性があるシグネチャがありません

更新 : 2007 年 11 月

このエラーは、メソッドとデリゲート間で変換が必要だが、これを実行できない場合に発生します。エラー原因としては、パラメータ間での変換、メソッドとデリゲートが関数である場合、戻り値での変換などが考えられます。

次のコードは、失敗した変換の例を示しています。デリゲートは FunDel です。

Delegate Function FunDel(ByVal i As Integer, ByVal d As Double) As Integer

次の関数はそれぞれ FunDel とは違い、その違いがこのエラーの原因になっています。

Function ExampleMethod1(ByVal m As Integer, ByVal aDate As Date) As Integer
End Function

Function ExampleMethod2(ByVal m As Integer, ByVal aDouble As Double) As Date
End Function

次の各代入ステートメントはエラーになります。

Sub Main()
    ' The second parameters of FunDel and ExampleMethod1, Double and Date,
    ' are not compatible.
    'Dim d1 As FunDel = AddressOf ExampleMethod1

    ' The return types of FunDel and ExampleMethod2, Integer and Date,
    ' are not compatible.
    'Dim d2 As FunDel = AddressOf ExampleMethod2

End Sub

Error ID: BC31143

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

  • 対応するパラメータ、および戻り値が存在する場合は戻り値の型も調べて、どのペアに互換性がないかを確認します。

参照

概念

厳密でないデリゲート変換

デリゲートと AddressOf 演算子