Закрытые конструкторы или классы без экземпляров
Сайт создан в системе uCoz
Меню сайта


Поиск по сайту
Loading


Форма входа


Помощь проекту

PayPal:

LiqPay or Credit/Debit Card:

W1 "Единый кошелек":
199990419310
WebMoney:
WME - E509190786817
WMZ - Z195499640086
WMU - U204403357554
WMR - R280087882619




Активные темы

  • Все вопросы касающиеся Neil Scope (7126)
  • инвертор на микропроцессоре с 12\220v с синусом на выходе (3)
  • Предложения по работе сайта и форума (18)
  • Изготовление ПП (7)
  • NeiLogicAnalyzer (48)
  • Двухполярный линейный БП с управлением на МК (91)
  • Заказ плат под NeilScope3 (12.2015) (60)
  • Первое знакомство с микроконтроллерами Silabs (105)
  • Куплю плату NS-3 (0)
  • Подскажите (0)



  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0



    Рекомендуемые браузеры: Mozzilla, Google Chrome






    Приветствую Вас, Пробегающий мимо · RSS 25.12.2024, 04:02

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