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 配列で置き換えます