Udostępnij za pośrednictwem


CA1051: Nie deklaruj widocznych pól wystąpień

TypeName

DoNotDeclareVisibleInstanceFields

CheckId

CA1051

Kategoria

Microsoft.Design

Zmiana kluczowa

Kluczowa

Przyczyna

Typ widoczny z zewnątrz, ma pole wystąpienia widoczne z zewnątrz.

Opis reguły

Głównym zastosowaniem pola powinno być to, co szczegółowo opisuje implementacja.Pola powinny być private lub internal i powinny być uwidocznione przy użyciu właściwości.Dostęp do właściwości jest tak prosty, jak dostęp do pola a kod w metodach dostępu do właściwości można zmienić wraz z rozwijaniem właściwości typu bez wprowadzania zmian kluczowych.Właściwości zwracające tylko wartość prywatnego lub wewnętrznego pola są zoptymalizowane do wykonywania na równi z dostępem do pola; bardzo małe zwiększenie wydajności jest skojarzone z użyciem pól widocznych z zewnątrz za pośrednictwem właściwości.

Widoczność z zewnątrz, odnosi się do poziomów dostępności public, protected i protected internal (Public, Protected oraz Protected Friend.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, należy stworzyć pole private lub internal i uwidocznić je za pomocą właściwości widocznej z zewnątrz.

Kiedy pominąć ostrzeżenia

Nie należy pomijać ostrzeżenia dotyczącego tej reguły.Pola widoczne z zewnątrz nie udostępniają żadnych korzyści, które nie są niedostępne dla właściwości.Ponadto pola publiczne nie mogą być chronione przez Żądania połączeń.See CA2112: Typy zabezpieczone nie powinny uwidaczniać pól.

Przykład

Poniższy przykład przedstawia typ (BadPublicInstanceFields), który narusza tę regułę.GoodPublicInstanceFields przedstawia poprawiony kod.

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

Powiązane reguły

CA2112: Typy zabezpieczone nie powinny uwidaczniać pól

Zobacz też

Koncepcje

Żądania połączeń