'ParamArray' は、拡張メソッドの最初のパラメータには適用できません

更新 : 2007 年 11 月

エラー メッセージ

'ParamArray' は、拡張メソッドの最初のパラメータには適用できません。最初のパラメータでは、拡張する型を指定します。

拡張メソッドの最初のパラメータは、そのメソッドが拡張するデータ型を指定します。したがって、最初のパラメータは必須であり、省略できません。パラメータ配列は自動的に省略可能になるので、拡張メソッドの最初の引数としては有効ではありません。

Bb384466.alert_note(ja-jp,VS.90).gifメモ :

メソッドの実行時には、このメソッドを呼び出した拡張データ型のインスタンスが、メソッドの最初のパラメータの引数になります。たとえば、Public Sub Print (ByVal str As String) という拡張メソッドがある場合、greeting.Print() の greeting インスタンスが最初のパラメータ str の引数になります。

Error ID: BC36554

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

  • パラメータ配列が拡張するデータ型を表しているのでない場合は、その型を指定する最初のパラメータを新しく追加します。

    <Extension()>
    Public Sub AddTo(ByRef str As String, ByVal ParamArray addOns() As String)
    ' Concatenate the strings in addOns to str.
    End Sub
    
  • パラメータ配列が拡張するデータ型を表している場合は、パラメータ配列の代わりに、引数を必要とする通常の配列に変更することを検討します。通常の配列は拡張できます。

    <Extension()>
    Public Function Sum(ByVal ints() As Integer) As Integer
        Dim total As Integer = 0
        For Each i As Integer In ints
            total = total + i
        Next i
        Return total
    End Function
    

参照

概念

拡張メソッド (Visual Basic)

パラメータ配列

省略可能なパラメータ