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

Хорошим примером статического класса можно назвать класс Console, который мы использовали в предыдущих уроках. Мы не можем создавать им объекты, но можем выполнять какие-то действия. Все поля класса, методы и свойства также должны быть статическими. В качестве примера создадим класс этого типа:
    static class Autor {
        private static string _name = "Н. Носов";

        public static string GetName() {
            return _name;
        }

    }
Вызов метода осуществляется следующим образом:
    class Program {
        static void Main() {
            string _AutorName = Autor.GetName();
            Console.WriteLine( _AutorName );
            Console.ReadKey();
        }
    }
Результат:

Даже если мы напишем конструктор для статического класса, то вызвать его так
Autor Au = new Autor();
мы не сможем и получим ошибку "Невозможно создать экземпляр статического класса "Consol.Autor" " Это и есть отличие статического класса от обычного. Как-же тогда будет вести себя программа, если мы создадим статичный метод в обычном классе? Давайте проверим!
    class Autor {
        private static string _name = "Н. Носов";
        private string _name2 = "М. Рид";

        public Autor() {
        }

        public static string GetName() {
            return _name;
        }

        public string  GetName2() {
            return _name2;
        }
    }
Важно! ИМЕНА статических полей, методов и.т.п. ДОЛЖНЫ ОТЛИЧАТСЯ от обычных, так как шарп не поймёт клонирование переменных.

Код программы у нас будет следующий:
        static void Main() {

            string _AutorName1 = Autor.GetName(); // вызов статического метода

            Autor ae = new Autor();
           
            string _AutorName2 = ae.GetName2(); // вызов метода экземпляра класса

            Console.WriteLine( "Писатели: {0} и {1}", _AutorName1, _AutorName2 );
           
            Console.ReadKey();
        }
Результат:

Главное, чтобы вы уловили суть статики. В начале может возникнуть путаница, но если вы сами напишите парочку примеров, то суть Вам станет очевидной и не нужно будет вбивать в гугле "c# Как сделать, чтобы класс не возвращал объекта?" и прочих запросов.

По статике у нас всё, до встречи в следующих уроках :)
Вход на сайт

Поиск
Категории раздела
Мини-чат
Наш опрос
Что скажете о новом дизайне?
Всего ответов: 0
Активность на сайте
Друзья сайта
Статистика

Онлайн всего: 2
Гостей: 1
Пользователей: 1
wmysterio
Сегодня нас посетили:
wmysterio