> For the complete documentation index, see [llms.txt](https://lessons.sannybuilder.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lessons.sannybuilder.com/00300/00100/000138.-detalnee-o-static.md).

# 000138. Детальнее о static

Детальнее о static||wmysterio|wmysterio|<wmysterio@yandex.ru>|||Всем огромный привет! В этом уроке мы детальнее остановимся на таком понятии, как static, то есть статический(статичный и как его ещё там называют ![smile](http://s49.ucoz.net/sm/15/smile.gif) ). Если этот оператор используется для класса, то это значит, что он не может иметь конструктора, как было в прошлых уроках - следовательно он не может создавать объекты. Сам класс считает себя одним из объектов и применяет команды только к себе.\
\
Хорошим примером статического класса можно назвать класс **Console**, который мы использовали в предыдущих уроках. Мы не можем создавать им объекты, но можем выполнять какие-то действия. Все поля класса, методы и свойства также должны быть статическими. В качестве примера создадим класс этого типа:

| <p>    static class Autor {<br>        private static string \_name = "Н. Носов";<br><br>        public static string GetName() {<br>            return \_name;<br>        }<br><br>    }<br></p> |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Вызов метода осуществляется следующим образом:

| <p>    class Program {<br>        static void Main() {<br>            string \_AutorName = Autor.GetName();<br>            Console.WriteLine( \_AutorName );<br>            Console.ReadKey();<br>        }<br>    }<br></p> |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Результат:\
![](https://github.com/wmysterio/scm-scripting-lessons/blob/main/_pu/1/78145578.png)\
Даже если мы напишем конструктор для статического класса, то вызвать его так<br>

| <p>Autor Au = new Autor();<br></p> |
| ---------------------------------- |

мы не сможем и получим ошибку "Невозможно создать экземпляр статического класса "Consol.Autor" " Это и есть отличие статического класса от обычного. Как-же тогда будет вести себя программа, если мы создадим статичный метод в обычном классе? Давайте проверим!

| <p>    class Autor {<br>        private static string \_name = "Н. Носов";<br>        private string \_name2 = "М. Рид";<br><br>        public Autor() {<br>        }<br><br>        public static string GetName() {<br>            return \_name;<br>        }<br><br>        public string  GetName2() {<br>            return \_name2;<br>        }<br>    }<br></p> |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

Важно! ИМЕНА статических полей, методов и.т.п. ДОЛЖНЫ ОТЛИЧАТСЯ от обычных, так как шарп не поймёт клонирование переменных.\
\
Код программы у нас будет следующий:

| <p>        static void Main() {<br><br>            string \_AutorName1 = Autor.GetName(); // вызов статического метода<br><br>            Autor ae = new Autor();<br>           <br>            string \_AutorName2 = ae.GetName2(); // вызов метода экземпляра класса<br><br>            Console.WriteLine( "Писатели: {0} и {1}", \_AutorName1, \_AutorName2 );<br>           <br>            Console.ReadKey();<br>        }<br></p> |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Результат:\
![](https://github.com/wmysterio/scm-scripting-lessons/blob/main/_pu/1/44010257.png)\
Главное, чтобы вы уловили суть статики. В начале может возникнуть путаница, но если вы сами напишите парочку примеров, то суть Вам станет очевидной и не нужно будет вбивать в гугле "c# Как сделать, чтобы класс не возвращал объекта?" и прочих запросов.\
\
По статике у нас всё, до встречи в следующих уроках :)\
|763|1|0|78145578`png`132`70\|44010257`png`268`66||detalnee\_o\_static|1392798629
