Статические классы и члены класса используются для создания данных и функций, к которым можно обращаться без создания экземпляра класса. Статические члены класса могут использоваться для разделения данных и поведения, которое не зависит от идентичности объекта: данные и функции не изменяются независимо от того, что происходит с объектом. Статические классы могут использоваться, когда в классе нет данных или поведения, которое зависит от идентичности объекта.
Класс может быть объявлен статическим, что означает, что он содержит только статические члены. Невозможно использовать ключевое слово new для создания экземпляров статического класса. Статические классы автоматически загружаются средой выполнения (CLR) .NET Framework при загрузке программы или пространства имен, содержащих этот класс.
Используйте статический класс для хранения методов, которые не связаны с конкретным объектом. Например, распространенным требованием является создание набора методов, которые не действуют на данные экземпляра и не связаны с конкретным объектом в вашем коде. Вы можете использовать статический класс для хранения этих методов.
Ниже приведены основные характеристики статического класса:
Они содержат только статические элементы.
Их невозможно создать.
Они запечатаны.
Они не могут содержать конструкторы экземпляров (Руководство по программированию в C #).
Поэтому создание статического класса в основном аналогично созданию класса, который содержит только статические члены и закрытый конструктор. Закрытый конструктор предотвращает создание экземпляра класса.
Преимущество использования статического класса заключается в том, что компилятор может проверить, чтобы убедиться, что никакие члены экземпляра не добавлены случайно. Компилятор гарантирует, что экземпляры этого класса не могут быть созданы.
Статические классы запечатаны и поэтому не могут наследоваться. Они не могут наследовать ни от какого класса, кроме Object. Статические классы не могут содержать конструктор экземпляра; однако они могут иметь статический конструктор. Для получения дополнительной информации см. Статические конструкторы (Руководство по программированию в C #).