Основы C#. Урок 24. Закрытые конструкторы или классы без экземпляров
В C# нет глобальных переменных, функций или констант. Все они обязательно должны принадлежать некоторому классу. И если у вас имеется класс, содержащий в себе, например, некоторые нужные вам константы, то экземпляры такого класса вам не нужны (так как вы создали этот класс исключительно как хранилище). Чтобы запретить создание экземпляров класса, вы объявляете конструктор в нем как закрытый (то есть с модификатором private или вовсе без модификатора - так как отсутствие модификатора и подразумевает private). Это означает, что создать экземпляр такого класса не удастся (что нам и надо).
Вот пример такого класса:
namespace test { //Класс без экземпляра class MyClass { //Закрытый конструктор private MyClass() { } public static int MyPhoneNumber=1239999; } class Test { public static void Main() { System.Console.WriteLine(MyClass.MyPhoneNumber); } } }
Тут у нас класс MyClass имеет закрытый конструктор, так что создавать его экземпляры мы не можем. Так, следующий код будет ошибочным:
class Test { public static void Main() { MyClass a=new MyClass(); //ошибка!!! } }
Использовать же статические переменные и константы такого класса мы можем (так, мы выводим на экран константу MyPhoneNumber).
Разумеется, в таком классе может содержать и методы:
class MyClass { //Закрытый конструктор private MyClass() { } public static int MyPhoneNumber=1239999; public static int SomeNumber=1; public static int GetSomeNumber(){ SomeNumber++; return SomeNumber; } } class Test { public static void Main() { System.Console.WriteLine(MyClass.GetSomeNumber()); //Выведется 2 System.Console.WriteLine(MyClass.GetSomeNumber()); //Выведется 3 } }
Указанный фрагмент выведет 2 и 3.