Параметр 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
Исправление этой ошибки
- Измените тип данных параметра в делегате или методе таким образом, чтобы необходимое расширяющее отношение существовало.
См. также
Основные понятия
Ослабленное преобразование делегата
Расширяющие и сужающие преобразования