更新 : 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
このエラーを解決するには
- 必要な拡大変換の関係になるように、デリゲートまたはメソッドのパラメータのデータ型を変更します。