CA1051 : Ne pas déclarer de champs d'instances visiblesCA1051: Do not declare visible instance fields

TypeNameTypeName DoNotDeclareVisibleInstanceFieldsDoNotDeclareVisibleInstanceFields
CheckIdCheckId CA1051CA1051
CategoryCategory Microsoft.DesignMicrosoft.Design
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

Un type visible de l’extérieur a un champ d’instance extérieurement visible.An externally visible type has an externally visible instance field.

Description de la règleRule Description

Un champ s'utilise principalement en tant que détail d'implémentation.The primary use of a field should be as an implementation detail. Les champs doivent être private ou internal et doivent être exposés à l’aide de propriétés.Fields should be private or internal and should be exposed by using properties. Il est aussi facile d’accéder à une propriété comme il est de l’accès à un champ, et le code dans les accesseurs d’une propriété peut changer lorsque les fonctionnalités du type évoluent sans introduire de modifications avec rupture.It is as easy to access a property as it is to access a field, and the code in the accessors of a property can change as the features of the type expand without introducing breaking changes. Propriétés qui retournent simplement la valeur d’un champ privé ou interne sont optimisées pour s’exécuter similaire à l’accès à un champ ; très peu de gain de performances est associé à l’utilisation de champs extérieurement visibles sur les propriétés.Properties that just return the value of a private or internal field are optimized to perform on par with accessing a field; very little performance gain is associated with the use of externally visible fields over properties.

Fait référence extérieurement visible à public, protected, et protected internal (Public, Protected, et Protected Friend en Visual Basic) niveaux d’accessibilité.Externally visible refers to public, protected, and protected internal (Public, Protected, and Protected Friend in Visual Basic) accessibility levels.

Comment corriger les violationsHow to Fix Violations

Pour corriger une violation de cette règle, rendez le champ private ou internal et l’exposer à l’aide d’une propriété visible de l’extérieur.To fix a violation of this rule, make the field private or internal and expose it by using an externally visible property.

Quand supprimer les avertissementsWhen to Suppress Warnings

Ne supprimez aucun avertissement de cette règle.Do not suppress a warning from this rule. Champs extérieurement visibles ne fournissent pas d’avantages qui ne sont pas disponibles pour les propriétés.Externally visible fields do not provide any benefits that are unavailable to properties. En outre, les champs publics ne peuvent pas être protégés par les demandes de liaison.Additionally, public fields cannot be protected by Link Demands. Consultez CA2112 : les types sécurisés ne doivent pas exposer de champs.See CA2112: Secured types should not expose fields.

ExempleExample

L’exemple suivant montre un type (BadPublicInstanceFields) qui enfreint cette règle.The following example shows a type (BadPublicInstanceFields) that violates this rule. GoodPublicInstanceFields Affiche le code corrigé.GoodPublicInstanceFields shows the corrected code.

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 : Les types sécurisés ne doivent pas exposer de champsCA2112: Secured types should not expose fields

Voir aussiSee Also

Demandes de liaisonLink Demands