'Optional' は、拡張メソッドの最初のパラメータには適用できません
更新 : 2007 年 11 月
エラー メッセージ
'Optional' は、拡張メソッドの最初のパラメータには適用できません。最初のパラメータでは、拡張する型を指定します。
拡張メソッドの最初のパラメータは、そのメソッドが拡張するデータ型を指定します。メソッドが実行されると、最初のパラメータは、そのメソッドを呼び出すデータ型のインスタンスにバインドされます。したがって、最初のパラメータは必須であり、省略できません。
この制限は、最初のパラメータにのみ適用されます。他のパラメータは、他のメソッドでの規則と同じように、省略可能なパラメータと必須のパラメータのどちらでもかまいません。詳細については、「パラメータの一覧」を参照してください。
エラー ID: BC36553
このエラーを解決するには
拡張されるデータ型を現在の最初のパラメータで指定する場合は、Optional キーワードを削除します。
現在の最初のパラメータがメソッドの標準パラメータであり、拡張されるデータ型をそのパラメータで示さない場合は、新しい最初のパラメータを追加します。
使用例
次の例の最初のパラメータは、Print メソッドが String データ型を拡張することを示す唯一の指定です。したがって、省略することはできません。
<Extension()>
Public Sub Print (ByVal str As String)
Console.WriteLine(str)
End Sub
拡張メソッドを次のように呼び出すと、メソッドの str パラメータは、Print を呼び出す String のインスタンスである greeting にバインドされます。コンパイラは、拡張メソッド Print の引数として greeting を使用します。
Dim greeting As String = "Hello"
greeting.Print()