Compartilhar via


CA1051: não declarar campos de instância visíveis

TypeName

DoNotDeclareVisibleInstanceFields

CheckId

CA1051

Categoria

Microsoft.Design

Alteração Significativa

Quebra

Causa

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

Descrição da Regra

O principal uso de um campo deve ser um como detalhes de implementação.Os campos devem ser private ou internal e devem ser exposta usando propriedades.É tão fácil de acesso é uma propriedade como acessar um campo, e o código nos acessadores de uma propriedade pode ser alterada desde que os recursos do tipo expandem sem enviar alterações.As propriedades que retornam apenas o valor de um campo particular ou interno são otimizadas para executar em foot de igualdade com acessar um campo; muito pequeno ganho de desempenho está associado ao uso de campos visíveis externamente sobre propriedades.

Externamente visível se refere a public, protected, e níveis de acessibilidade de protected internal (Public, Protected, e Protected Friend no Visual Basic).

Como Corrigir Violações

Para corrigir uma violação desta regra, faça o campo private ou internal e expõe o usando uma propriedade externamente visível.

Quando Suprimir Alertas

Não elimine um alerta desta regra.Os campos externamente visíveis não fornece nenhum benefícios que não estão disponíveis às propriedades.Além disso, os campos públicos não podem ser protegidos por Demandas de link.Consulte CA2112: os tipos seguros não devem expor campos.

Exemplo

O exemplo a seguir mostra um tipo (BadPublicInstanceFields) que viola esta regra.GoodPublicInstanceFields mostra 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: os tipos seguros não devem expor campos

Consulte também

Conceitos

Demandas de link