Sdílet prostřednictvím


CA1051: Nedeklarujte viditelná pole instance

TypeName

DoNotDeclareVisibleInstanceFields

CheckId

CA1051

Kategorie

Microsoft.Design

Narušující změna

Narušující

Příčina

Externě viditelný typ má pole instance externě viditelné.

Popis pravidla

Hlavní použití pole by mělo být jako podrobnost implementace.Pole by měla být private nebo internal a by měla být vystavena pomocí vlastností.Jak je snadný přístup k vlastnosti, tak je snadný přístup k poli, a kód v přístupových mechanismech vlastnosti se může změnit, jako funkce rozšíření typu bez zavedení změn rozdělení.Vlastnosti, které vracejí pouze hodnotu soukromého nebo interního pole, jsou optimalizovány pro provádění na stejné úrovni, jako je přístup k poli. Velmi malé zvýšení výkonu je spojeno s použitím externě viditelných polí přes vlastnosti.

Externě viditelné odkazují na úrovně přístupu public, protected, a protected internal (Public, Protected, a Protected Friend v jazyce Visual Basic).

Jak vyřešit porušení

Pro vyřešení porušení tohoto pravidla, je potřeba vytvořit pole private nebo internal a zpřístupnit jej pomocí externě viditelné vlastnosti.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.Externě viditelná pole neposkytují žádné výhody, které nejsou k dispozici u vlastností.Navíc, veřejné pole nelze chránit pomocí Požadavky na odkaz.Viz téma CA2112: Zabezpečené typy by neměly vystavovat pole.

Příklad

Následující příklad ukazuje typ (BadPublicInstanceFields), který porušuje toto pravidlo.GoodPublicInstanceFields zobrazuje opravený kód.

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

Související pravidla

CA2112: Zabezpečené typy by neměly vystavovat pole

Viz také

Koncepty

Požadavky na odkaz