Типы статических владельцев не должны иметь конструкторы
Обновлен: Ноябрь 2007
TypeName |
StaticHolderTypesShouldNotHaveConstructors |
CheckId |
CA1053 |
Категория |
Microsoft.Design |
Критическое изменение |
Критическое изменение |
Причина
В открытом или вложенном открытом типе объявляются только статические элементы и имеется открытый или защищенный конструктор по умолчанию.
Описание правила
Конструктор не нужен, поскольку при вызове статических членов не требуется экземпляр типа. Кроме того, в типе нет нестатических членов, поэтому создание экземпляра не предоставит доступ к членам этого типа.
Предотвращение нарушений
Чтобы исправить нарушение этого правила, удалите конструктор по умолчанию или сделайте его закрытым.
![]() |
---|
Некоторые компиляторы автоматически создают открытый конструктор по умолчанию, если тип не определяет никакие конструкторы. В этом случае добавьте закрытый конструктор по умолчанию, чтобы исправить нарушение правила. |
Отключение предупреждений
Не следует отключать вывод предупреждений для этого правила. Наличие конструктора означает, что тип не является статическим.
Пример
В следующем примере демонстрируется тип, нарушающий это правило. Обратите внимание, что в исходном коде отсутствует конструктор по умолчанию. При компиляции этого кода в сборку компилятор 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() {}
}
}