次の方法で共有


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

更新 : 2007 年 11 月

Option Strict がオンになっていると、デリゲートのパラメータのデータ型と、そのデリゲート型の変数に割り当てられている関数または Sub の対応するパラメータのデータ型との間で、縮小変換を行うことはできません。たとえば、関数デリゲート Del には Integer 型のパラメータが 1 つあり、関数 Conversion1、Conversion2、Conversion3 には別々の数値型のパラメータが 1 つずつあるとします。

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

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

  • 必要な拡大変換の関係になるように、デリゲートまたはメソッドのパラメータのデータ型を変更します。

参照

概念

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

拡大変換と縮小変換

デリゲートと AddressOf 演算子

その他の技術情報

Visual Basic でのデリゲート