progs.biz  
Начало > C# > Основы > Урок 24
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Разработка Windows-приложений на Visual Basic.NET и Visual C#.NET. Учебный курс MCAD/MCSD.
 Разработка Windows-приложений на Visual Basic.NET и Visual C#.NET. Учебный курс MCAD/MCSD.
Заказать на Озоне



Яндекс-цитирования

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

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz

 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2005 сайт progs.biz
© 2002-2005 Алексеев Игорь