Поделиться через


Типы статических владельцев не должны иметь конструкторы

Обновлен: Ноябрь 2007

TypeName

StaticHolderTypesShouldNotHaveConstructors

CheckId

CA1053

Категория

Microsoft.Design

Критическое изменение

Критическое изменение

Причина

В открытом или вложенном открытом типе объявляются только статические элементы и имеется открытый или защищенный конструктор по умолчанию.

Описание правила

Конструктор не нужен, поскольку при вызове статических членов не требуется экземпляр типа. Кроме того, в типе нет нестатических членов, поэтому создание экземпляра не предоставит доступ к членам этого типа.

Предотвращение нарушений

Чтобы исправить нарушение этого правила, удалите конструктор по умолчанию или сделайте его закрытым.

ms182169.alert_note(ru-ru,VS.90).gifПримечание.

Некоторые компиляторы автоматически создают открытый конструктор по умолчанию, если тип не определяет никакие конструкторы. В этом случае добавьте закрытый конструктор по умолчанию, чтобы исправить нарушение правила.

Отключение предупреждений

Не следует отключать вывод предупреждений для этого правила. Наличие конструктора означает, что тип не является статическим.

Пример

В следующем примере демонстрируется тип, нарушающий это правило. Обратите внимание, что в исходном коде отсутствует конструктор по умолчанию. При компиляции этого кода в сборку компилятор C# вставит конструктор по умолчанию, который нарушит данное правило. Чтобы исправить ошибку, объявите закрытый конструктор.

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() {}
   }
}