Прочитать на английском

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


Параметр Strict On не позволяет сузить неявные преобразования типов между лямбда-выражением и делегатом "<делегирование">

С " Option Strict on" у вас не может иметься сужающее преобразование между типом данных параметра в делегате и соответствующим параметром лямбда-выражения, назначенным переменной этого типа делегата. Например, в следующем коде делегат 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"  

См. также