000138. Детальнее о static
Last updated
Last updated
Детальнее о static||wmysterio|wmysterio|wmysterio@yandex.ru|||Всем огромный привет! В этом уроке мы детальнее остановимся на таком понятии, как static, то есть статический(статичный и как его ещё там называют ). Если этот оператор используется для класса, то это значит, что он не может иметь конструктора, как было в прошлых уроках - следовательно он не может создавать объекты. Сам класс считает себя одним из объектов и применяет команды только к себе. Хорошим примером статического класса можно назвать класс 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# Как сделать, чтобы класс не возвращал объекта?" и прочих запросов.
По статике у нас всё, до встречи в следующих уроках :)
|763|1|0|78145578png
13270\|44010257
png268
66||detalnee_o_static|1392798629