다음을 통해 공유


CA1051: 표시되는 인스턴스 필드를 선언하지 마십시오.

TypeName

DoNotDeclareVisibleInstanceFields

CheckId

CA1051

범주

Microsoft.Design

변경 수준

주요 변경

원인

외부에서 볼 수 있는 형식에 외부에서 볼 수 있는 인스턴스 필드가 있습니다.

규칙 설명

필드의 주된 용도는 구현을 세부적으로 설명하는 것입니다. 필드는 private 또는 internal이어야 하고 속성을 통해 노출되어야 합니다. 속성에 액세스하는 것은 필드에 액세스하는 것만큼 쉬우며 형식의 기능이 주요 변경 없이 확장되면 속성의 접근자에 있는 코드를 변경할 수 있습니다 주요 변경 내용을 변경할 수 있습니다. private 또는 internal 필드의 값을 반환하기만 하는 속성은 필드 액세스와 동일하게 수행되도록 최적화됩니다. 따라서 속성 대신 외부에서 볼 수 있는 필드를 사용해도 성능상 이점은 거의 없습니다.

외부에서 볼 수 있다는 것은 public, protected 및 protected internal(Visual Basic의 경우 Public, Protected 및 Protected Friend) 액세스 가능성 수준을 나타냅니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 필드를 private 또는 internal로 지정하고 외부에서 볼 수 있는 속성을 사용하여 노출시킵니다.

경고를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다. 외부에서 볼 수 있는 필드에서 제공하는 이점은 속성에도 적용됩니다. 또한 공용 필드는 링크 요청으로 보호될 수 없습니다. CA2112: 보안 형식은 필드를 노출하면 안 됩니다.를 참조하십시오.

예제

다음 예제에서는 이 규칙을 위반하는 형식 (BadPublicInstanceFields)을 보여 줍니다. GoodPublicInstanceFields는 올바른 코드를 표시합니다.

using System;

namespace DesignLibrary
{
   public class BadPublicInstanceFields
   {
      // Violates rule DoNotDeclareVisibleInstanceFields.
      public int instanceData = 32;
   }

   public class GoodPublicInstanceFields
   {
      private int instanceData = 32;

      public int InstanceData
      {
         get { return instanceData; }
         set { instanceData = value ; }
      }
   }
}

관련 규칙

CA2112: 보안 형식은 필드를 노출하면 안 됩니다.

참고 항목

개념

링크 요청