'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()

参照

処理手順

方法 : 省略可能なパラメータをプロシージャに定義する

概念

拡張メソッド (Visual Basic)

省略可能なパラメータ