logo search
CSharp_Prog_Guide

Статические классы

Класс может быть объявлен статическим: это означает, что он содержит только статические члены. Для создания экземпляров статических классов нельзя использовать ключевое слово new. Статические классы автоматически загружаются средой CLR платформы .NET Framework при загрузке программы или пространства имен, содержащих такой класс.

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

Ниже описаны основные параметры статических классов.

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

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

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

When to Use Static Classes

Suppose you have a CompanyInfo class that contains the following methods to get information about the company name and address.

class CompanyInfo

{

public string GetCompanyName() { return "CompanyName"; }

public string GetCompanyAddress() { return "CompanyAddress"; }

//...

}

These methods do not have to be attached to a specific instance of the class. Therefore, instead of creating unnecessary instances of this class, you can declare it as a static class:

static class CompanyInfo

{

public static string GetCompanyName() { return "CompanyName"; }

public static string GetCompanyAddress() { return "CompanyAddress"; }

//...

}

Use a static class as a unit of organization for methods not associated with particular objects. Also, a static class can make your implementation simpler and faster because you do not have to create an object in order to call its methods. It is useful to organize the methods inside the class in a meaningful way, such as the methods of the Math class in the System namespace.