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
更正此错误
- 更改委托或方法中的参数的数据类型,以便存在所需的扩大关系。