Поделиться через


Метод <имяМетода> не имеет подписи, совместимой с делегатом <имяДелегата>

Обновлен: Ноябрь 2007

Method '<methodname>' does not have a signature compatible with delegate <'delegatename'>

Эта ошибка возникает, когда необходимое преобразование между методом и делегатом невозможно. Причиной ошибки может быть преобразование между параметрами или когда метод и делегат являются функциями, преобразованием возвращаемых значений.

Следующий код иллюстрирует сбой преобразования. Делегат является 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

Идентификатор ошибки: BC31143

Исправление этой ошибки

  • Просмотрите соответствующие параметры и, при наличии возвращаемых типов, определите, какая из пар несовместима.

См. также

Основные понятия

Ослабленное преобразование делегата

Делегаты и оператор AddressOf