CA1026: 기본 매개 변수를 사용하면 안 됩니다.
TypeName |
DefaultParametersShouldNotBeUsed |
CheckId |
CA1026 |
범주 |
Microsoft.Design |
변경 수준 |
주요 변경 |
원인
외부에서 볼 수 있는 형식에 기본 매개 변수를 사용하는 외부에서 볼 수 있는 메서드가 포함되어 있습니다.
규칙 설명
CLS(공용 언어 사양)에서는 기본 매개 변수를 사용하는 메서드를 허용하지만 컴파일러가 이들 매개 변수에 할당된 값을 무시할 수 있도록 허용합니다. 기본 매개 변수 값을 무시하는 컴파일러용으로 작성된 코드는 각 기본 매개 변수에 대한 인수를 명시적으로 제공해야 합니다. 여러 프로그래밍 언어에서 원하는 동작을 유지하려면 기본 매개 변수를 사용하는 메서드를 기본 매개 변수를 제공하는 메서드 오버로드로 바꿔야 합니다.
컴파일러는 관리 코드에 액세스할 때 Managed Extension for 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: 반복 인수를 매개 변수 배열로 바꾸십시오.