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


Option Strict On запрещает сужение в неявных преобразованиях типов между лямбда-выражением и делегатом <имяДелегата>

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

Option Strict On does not allow narrowing in implicit type conversions between the lambda expression and delegate '<delegatename>'

С установленным параметром Option Strict не может быть сужающего преобразования между типом данных параметра в делегате и соответствующим параметром лямбда-выражения, который присваивается переменной типа делегат. Например, в следующем коде делегат Del имеет один параметр типа Integer.

Delegate Function Del(ByVal p As Integer) As String

Таким образом, соответствующий параметр любого лямбда-выражения, присваиваемый переменной типа Del, может быть 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"

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

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

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

  • Не указывайте типы данных параметров в лямбда-выражении. Типы переносятся из соответствующих параметров в делегате.

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

См. также

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

Лямбда-выражения

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

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

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

Делегаты в Visual Basic