Option Strict On 不允许对 lambda 表达式和委托“<delegatename>”之间的隐式类型转换进行收缩

更新:2007 年 11 月

如果将 Option Strict 设置为“On”,则无法在委托参数数据类型与分配给该委托类型变量的 lambda 表达式的对应参数之间进行收缩转换。例如,在下面的代码中,委托 Del 具有一个 Integer 类型的参数。

Delegate Function Del(ByVal p As Integer) As String

因此,分配给 Del 类型变量的任何 lambda 表达式的对应参数可以是 Integer,或者可以是任何存在以 Integer 为转换来源的扩大转换的数据类型。

' Valid.
Dim example1 As Del = Function(n As Integer) "Valid"
Dim example2 As Del = Function(n As Long) "Valid"

' Not valid.
Dim example3 As Del = Function(n As Short) "Not Valid"

**错误 ID:**BC36662

更正此错误

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

  • 不要在 lambda 表达式中指定参数数据类型。将从委托内的对应参数中推断类型。

    Dim example4 As Del = Function(n) "Valid"
    

请参见

概念

lambda 表达式

扩大转换和收缩转换

宽松委托转换

其他资源

Visual Basic 中的委托