다음을 통해 공유


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: 반복 인수를 매개 변수 배열로 바꾸십시오.

참고 항목

개념

공용 언어 사양