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


Параметр Strict On запрещает сужающее неявное преобразование типа между методом <имяМетода> и делегатом <имяДелегата>

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

Option Strict On does not allow narrowing in implicit type conversions between method '<methodname>' and delegate '<delegatename>'

Если включен параметр Option Strict, невозможно сужающее преобразование между типом данных параметра в делегате и соответствующем параметре функции, а также присвоение Sub к переменной типа делегат. Например, делегат функции Del имеет один параметр типа Integer, а функции Conversion1, Conversion2 и Conversion3 имеют один параметр различных числовых типов.

Delegate Function Del(ByVal p As Integer) As String

Function Conversion1(ByVal n As Integer) As String
    Return "Valid"
End Function

Function Conversion2(ByVal n As Long) As String
    Return "Valid"
End Function

Function Conversion3(ByVal n As Short) As String
    Return "Not valid"
End Function

Так как расширяющие преобразования из Integer в Integer и в Long существуют, следующие присвоения корректны.

' Valid.
Dim funDel1 As Del = AddressOf Conversion1
Dim funDel2 As Del = AddressOf Conversion2

Преобразование из Integer в Short является сужающим преобразованием. Таким образом, следующее присвоение недопустимо.

' Not valid.
Dim funDel3 As Del = AddressOf Conversion3

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

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

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

См. также

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

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

Расширяющие и сужающие преобразования

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

Другие ресурсы

Делегаты в Visual Basic