次の方法で共有


CA1051: 参照できるインスタンス フィールドを宣言しないでください

TypeName

DoNotDeclareVisibleInstanceFields

CheckId

CA1051

[カテゴリ]

Microsoft.Design

互換性に影響する変更点

あり

原因

外部から参照できる型に、外部から参照できるインスタンス フィールドがあります。

規則の説明

フィールドの主な用途は、実装の詳細にする必要があります。フィールドは 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: セキュリティで保護された型はフィールドを公開してはなりません

参照

概念

リンク確認要求