Статические классы в C#

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

В этой статье я хочу рассказать о создании статических классов (не просто классов, в которых всего лишь присутствуют статические сущности, такие как поля, метод, свойства и т.п., об этом я рассказывал в предыдущей статье), а так же об особенностях их использования. Класс считается статическим, если при его создании, перед ключевым словом class указывается ключевое слово static. Определение класса статическим, означает то, что этот класс является набором только статических сущностей (полей, методов, свойств и т.п.), и, внимание, создавать объекты такого класс нельзя!

Кроме этого, на статический класс, накладываются как минимум следующие ограничения:

  • статический класс не может служить базовым для других классов, а так же, сам не может быть наследником какого-либо произвольного класса;
  • статический класс не может содержать сущности с атрибутами доступа protected и protected internal (да они и не нужны, все равно наследование запрещено);
  • класс не может иметь перегруженных операций.

О перегрузке операций (или операторов, например сложения, вычитания и т.п.) я напишу отдельную статью, или даже цикл статей…

А сейчас я покажу пример создания статического класса. Но для этого, давайте вспомним пример из предыдущей статьи. В ней был рассмотрен класс «Operations», который выглядел так:

//Класс, реализующий некие операции
class Operations
{
    //Статический метод, принимающий два целых числа и возвращающий их сумму
    public static int Sum(int aFirstArg, int aSecondArg)
    {
        return aFirstArg + aSecondArg;
    }
}

Этот класс не имеет никаких не статических методов, полей свойств и прочего, и он отлично подходит для того, чтобы сделать его статическим. Ведь действительно, создавать объекты этого класса практически бессмысленно! Вот так будет выглядеть этот класс, если мы сделаем его статическим:

//Класс, реализующий некие операции
static class Operations
{
    //Статический метод, принимающий два целых числа и возвращающий их сумму
    public static int Sum(int aFirstArg, int aSecondArg)
    {
        return aFirstArg + aSecondArg;
    }
}

Обратите внимание, даже не смотря на то что весь класс является статическим, метод «Sum» мы тоже явно сделали статическим! Так требует компилятор…

Вот так вот у меня для Вас информация о статических классах.

Добавить комментарий