Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

Статические классы и члены статических классов

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

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

Класс может быть объявлен статическим: это означает, что он содержит только статические члены. Для создания экземпляров статических классов нельзя использовать ключевое слово 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.