Compartilhar via


CA1051: Não declarar os campos de instância visível

TypeName

DoNotDeclareVisibleInstanceFields

CheckId

CA1051

<strong>Categoria</strong>

Microsoft.design

Alteração significativa

Quebrando

Causa

Um tipo visível externamente tem um campo de instância visível externamente.

Descrição da regra

O principal uso de um campo deve ser como um detalhe de implementação.Campos que devem ser private ou internal e devem ser expostas por meio de propriedades.Ele é tão fácil acessar uma propriedade, como é para acesso a um campo, e o código no acessadores de uma propriedade pode alterar como os recursos do tipo expandir sem introduzir alterações significativas.Propriedades que só retornam o valor de um campo private ou internal são otimizadas para executar em comparação com a acessar um campo; muito pouco ganho de desempenho está associado com o uso de campos visíveis externamente através de propriedades.

Refere-se visível externamente a public, protected, e protected internal (Public, Protected, e Protected Friend em Visual Basic) os níveis de acessibilidade.

Como corrigir violações

Para corrigir uma violação desta regra, tornar o campo private ou internal e expô-lo usando uma propriedade visível externamente.

Quando suprimir avisos

Não suprimir um aviso da regra.Os campos visíveis externamente não fornecem nenhum benefício que não está disponível para as propriedades.Além disso, os campos públicos não podem ser protegidos por Demandas de link.Consulte CA2112: Tipos de seguros não devem expor campos.

Exemplo

O exemplo a seguir mostra um tipo (BadPublicInstanceFields) que viola essa regra.GoodPublicInstanceFieldsmostra o código corrigido.

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 ; }
      }
   }
}

Regras relacionadas

CA2112: Tipos de seguros não devem expor campos

Consulte também

Conceitos

Demandas de link