# 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lessons.sannybuilder.com/00300/00100/000138.-detalnee-o-static.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
