Основы 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. |