Udostępnij za pośrednictwem


CA1053: Typy obsługi statycznej nie powinny mieć konstruktorów

TypeName

StaticHolderTypesShouldNotHaveConstructors

CheckId

CA1053

Kategoria

Microsoft.Design

Zmiana kluczowa

Kluczowa

Przyczyna

Typ publiczny lub publiczny zagnieżdżony deklaruje tylko statyczne elementy członkowskie i ma publiczny lub chroniony konstruktor domyślny.

Opis reguły

Konstruktor jest zbędny, ponieważ wywołanie statycznego elementu członkowskiego nie wymaga wystąpienia tego typu.Ponieważ typ nie ma niestatycznych elementów członkowskich, tworzenie wystąpień nie zapewnia dostępu do jakiegokolwiek elementu członkowskiego typu.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, usuń domyślny konstruktora lub uczyń go prywatnym.

[!UWAGA]

Jeśli typ nie definiuje żadnych konstruktorów niektóre kompilatory automatycznie tworzą domyślny publiczny konstruktor.Jeśli tak jest w przypadku tego typu, dodaj domyślny konstruktor prywatny aby usunąć naruszenie.

Kiedy pominąć ostrzeżenia

Nie należy pomijać ostrzeżenia dotyczącego tej reguły.Obecność konstruktora sugeruje, że typ nie jest typem statycznym.

Przykład

Poniższy przykład pokazuje typ, który narusza regułę.Należy zauważyć, że w kodzie źródłowym nie ma domyślnego konstruktora.Gdy ten kod zostaje skompilowany do zestawu, kompilator C# wstawi domyślny konstruktor, co naruszy regułę.Aby to naprawić, należy zadeklarować prywatny konstruktor.

using System;

namespace DesignLibrary
{
   public class NoInstancesNeeded
   {
      // Violates rule: StaticHolderTypesShouldNotHaveConstructors. 
      // Uncomment the following line to correct the violation. 
      // private NoInstancesNeeded() {} 

      public static void Method1() {}
      public static void Method2() {}
   }
}