다음을 통해 공유


CA1034: 중첩 형식은 노출하지 마십시오.

속성
규칙 ID CA1034
타이틀 중첩 형식은 노출되면 안 됩니다.
범주 디자인
수정 사항이 주요 변경인지 여부 주요 변경
.NET 8에서 기본적으로 사용 아니요

원인

외부에 표시되는 형식은 외부에 표시되는 형식 선언을 포함합니다. 중첩 열거형, protected 형식, 작성기 패턴은 이 규칙에서 제외됩니다.

규칙 설명

중첩 형식은 다른 형식의 범위 내에 선언된 형식입니다. 중첩 형식은 포함하는 형식의 private 구현 정보를 캡슐화하는 데 유용합니다. 이 용도로 사용할 경우 중첩 형식은 외부에 노출되면 안 됩니다.

논리적 그룹화에 대해 외부에 표시되는 중첩 유형을 사용하지 마세요. 또는 이름 충돌을 방지하려면 네임스페이스를 대신 사용하세요.

중첩 형식에는 멤버 접근성이라는 개념이 포함되며 일부 프로그래머는 이를 명확하게 이해하지 못합니다.

보호된 형식은 미리 사용자 지정 시나리오에서 서브클래스 및 중첩 형식에 사용할 수 있습니다.

위반 문제를 해결하는 방법

중첩 형식이 외부에 표시되지 않게 하려면 형식의 접근성을 변경합니다. 그러지 않으면 부모에서 중첩 형식을 제거합니다. 중첩의 목적이 중첩 형식을 범주화하는 것이면 대신 네임스페이스를 사용하여 계층 구조를 만듭니다.

경고를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다.

예시

다음 예제에서는 규칙을 위반하는 형식을 보여 줍니다.

public class ParentType
{
    public class NestedType
    {
        public NestedType()
        {
        }
    }

    public ParentType()
    {
        NestedType nt = new NestedType();
    }
}
Imports System

Namespace ca1034

    Class ParentType

        Public Class NestedType
            Sub New()
            End Sub
        End Class

        Sub New()
        End Sub

    End Class

End Namespace