Share via


Typen, die statische Member enthalten, sollten keine Konstruktoren aufweisen

     TypeName

StaticHolderTypesShouldNotHaveConstructors

CheckId

CA1053

Kategorie

Microsoft.Design

Unterbrechende Änderung

Breaking

Ursache

Ein öffentlicher oder verschachtelter öffentlicher Typ deklariert nur statische Member und verfügt über einen öffentlichen oder geschützten Standardkonstruktor.

Regelbeschreibung

Der Konstruktor ist überflüssig, da zum Aufrufen statischer Member keine Instanz des Typs erforderlich ist. Da der Typ außerdem keine nicht statischen Member besitzt, wird durch die Erstellung einer Instanz kein Zugriff auf einen Member des Typs erteilt.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, entfernen Sie den Standardkonstruktor, oder definieren Sie ihn als privaten Konstruktor.

Hinweis

Einige Compiler erstellen automatisch einen öffentlichen Standardkonstruktor, wenn der Typ keine Konstruktoren definiert. Trifft dies auf Ihren Typ zu, fügen Sie einen private-Standardkonstruktor hinzu, um den Verstoß zu beseitigen.

Warnungsausschluss

Schließen Sie keine Warnung dieser Regel aus. Das Vorhandensein des Konstruktors impliziert, dass es sich bei dem Typ nicht um einen statischen Typ handelt.

Beispiel

Im folgenden Beispiel wird ein Typ veranschaulicht, der gegen diese Regel verstößt. Sie sehen, dass es im Quellcode keinen Standardkonstruktor gibt. Wenn dieser Code in eine Assembly kompiliert wird, fügt der C#-Compiler einen Standardkonstruktor ein, der gegen diese Regel verstößt. Um diesen Verstoß zu beheben, deklarieren Sie einen privaten 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() {}
   }
}