次の方法で共有


CA1026: 既定のパラメーターを使用できません

TypeName

DefaultParametersShouldNotBeUsed

CheckId

CA1026

分類

Microsoft.Design

互換性に影響する変更点

あり

原因

外部から参照できる型に含まれる外部から参照できるメソッドで、既定のパラメーターが使用されています。

規則の説明

既定のパラメーターを使用するメソッドは、共通言語仕様 (CLS) で許可されていますが、CLS では、既定のパラメーターに割り当てられた値をコンパイラで無視することも許可されています。既定のパラメーター値を無視するコンパイラ用にコードを記述する場合、既定の各パラメーターへ明示的に引数を指定する必要があります。複数のプログラミング言語間で動作を維持するために、既定のパラメーターを使用するメソッドは、既定のパラメーターを指定したメソッドのオーバーロードで置換します。

C++ マネージ拡張では、コンパイラは、マネージ コードにアクセスするときに既定のパラメーター値を無視します。Visual Basic コンパイラは、Optional (Visual Basic) キーワードを使用する既定のパラメーターを持つメソッドをサポートしています。

違反の修正方法

この規則違反を修正するには、既定のパラメーターを使用するメソッドを、既定のパラメーターが指定されたメソッドのオーバーロードで置換します。

警告を抑制する状況

この規則による警告は抑制しないでください。

使用例

既定のパラメーターを使用するメソッドと、同等の機能を備えるオーバーロードのメソッドを次の例に示します。

Imports System

<Assembly: CLSCompliant(True)>
Namespace DesignLibrary

    Public Class DefaultVersusOverloaded

        Sub DefaultParameters(Optional parameter1 As Integer = 1, _
                              Optional parameter2 As Integer = 5)
            ' ...
            Console.WriteLine("{0} : {1}", parameter1, parameter2)
        End Sub 

        Sub OverloadedMethod()
            OverloadedMethod(1, 5)
        End Sub 

        Sub OverloadedMethod(parameter1 As Integer)
            OverloadedMethod(parameter1, 5)
        End Sub 

        Sub OverloadedMethod(parameter1 As Integer, parameter2 As Integer)
            ' ...
            Console.WriteLine("{0} : {1}", parameter1, parameter2)
        End Sub 

    End Class 

End Namespace

関連規則

CA1025: 反復する引数を params 配列で置き換えます

参照

概念

言語への非依存性、および言語非依存コンポーネント