Option Strict On では、ラムダ式とデリゲート '<delegatename>' 間の暗黙的な型の縮小変換は許可されていません

更新 : 2007 年 11 月

Option Strict がオンになっていると、デリゲートのパラメータのデータ型と、そのデリゲート型の変数に割り当てられているラムダ式の対応するパラメータのデータ型との間で、縮小変換を行うことはできません。たとえば、次のコードでは、デリゲート Del に 1 つの 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"

エラー ID: BC36662

このエラーを解決するには

  • 拡大変換になるように、デリゲートまたはラムダ式のパラメータのデータ型を変更します。

  • ラムダ式でパラメータのデータ型を指定しません。データ型は、デリゲートに指定されている対応するパラメータから推論されます。

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

参照

概念

ラムダ式

拡大変換と縮小変換

厳密でないデリゲート変換

その他の技術情報

Visual Basic でのデリゲート