Option Strict On 不允许在方法“<methodname>”和委托“<delegatename>”之间的隐式类型转换中进行收缩

更新:2007 年 11 月

如果将 Option Strict 设置为“On”,则无法在委托参数数据类型与分配给该委托类型变量的函数或 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

错误 ID:BC36663

更正此错误

  • 更改委托或方法中的参数的数据类型,以便存在所需的扩大关系。

请参见

概念

宽松委托转换

扩大转换和收缩转换

委托和 AddressOf 运算符

其他资源

Visual Basic 中的委托