background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "C# урок №15 - ключевое слово static. Статические классы и методы."

input logo icon
Теги видео
|

Теги видео

Степан Береговой
программирование
visual studio
vs community 2019
C#
visual studio уроки
программирование с нуля
уроки для начинающих
C# урок
C# с нуля
dotnet уроки
программирование для начинающих
программирование с чего начать
школа программирования
научиться программировать
основы программирования
программист
обучение программированию
ключевое слово static
статические методы
статические классы
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:03
канале и мой кому вообще посвящен
00:00:04
программированию в целом и в частности
00:00:07
сишарпа сейчас будет урок по
00:00:09
сишарпа урок номер 15 продолжение
00:00:12
прошлого видео и продолжаем в общем-то
00:00:16
изучать с нуля сишарп то все идет именно
00:00:20
таким образом что последовательно с нуля
00:00:22
идет изложения урока пусть и шапку и в
00:00:26
этом уроке мы разберем ключевое слово
00:00:27
static
00:00:28
что это за слова казалось бы всего лишь
00:00:30
одно ключевое слово но на самом деле это
00:00:32
достаточно серьезный момент для
00:00:34
понимания ну очень многих вещей и на
00:00:37
этом ключевом слове действительно стоит
00:00:40
отдельно заострить внимание то есть
00:00:43
стоить ему выделить целый урок что мы
00:00:46
сейчас и сделаем итак поехали
00:00:50
[музыка]
00:00:56
и так значит я переключаю сейчас на свой
00:01:03
второй кран и мы сразу посмотрим на
00:01:07
некоторые факты и факт у нас номер один
00:01:11
я для себя выделил вот здесь чтобы я
00:01:14
выделил вот эти момент нас у компьютера
00:01:17
оперативная память ограниченна можно
00:01:23
назвать эти факту на самом деле
00:01:24
аксиомами ну то есть то что не требует
00:01:27
доказательств а оперативная память ограниченна все об
00:01:31
этом знают ну как бы программируем на
00:01:33
сишарпе мы об этом сильно не
00:01:35
задумываемся потому что сборка мусора
00:01:37
есть и все такое второй момент язык
00:01:40
программирования высокого уровня
00:01:42
защищает нас от ошибок это одна из задач
00:01:45
языков высокого уровня то есть они несут
00:01:49
определенные издержки связи с этим но
00:01:51
зато нам проще программировать именно
00:01:53
обратите внимание защищает нас от ошибок
00:01:57
мы к этому вернёмся позже факт номер три
00:02:00
при любом создании объекта выделяется
00:02:03
память она когда-то потом освобождается
00:02:06
но в данном случае нас это не интересует
00:02:08
важно что она выделяется и естественно
00:02:10
от этого объем оперативной памяти
00:02:12
которая нам доступна становится меньше и
00:02:16
четвертый факт
00:02:17
ключевое слово static по умолчанию
00:02:19
отсутствует у методов и классов то есть
00:02:22
по молчанию это ключевое слово не
00:02:25
подписывается не добавляется то есть мы
00:02:28
должны
00:02:29
явно его включить вот тоже момент теперь
00:02:33
попробуем собрать все это в кучу и
00:02:36
разобраться чем это чревато и почему это
00:02:40
ключевое слово такое важное мы
00:02:42
рассмотрим какой-нибудь объект
00:02:46
простейший это будет например
00:02:50
калькулятор данном случае пример простой
00:02:54
для того чтобы мы не думали о самом
00:02:56
премьере и потому что мне будет
00:02:57
давайте типа пишут сложные какие-то
00:02:59
примеры ну здесь не нужен ни какой то
00:03:01
сложный пример потому что мы разбираем
00:03:04
сам по себе аспект сложно но
00:03:06
пример простой чтобы мы не думали об
00:03:09
этом возьмем значит калькулятор назовем
00:03:12
его коллег и
00:03:16
класс как этот класс у нас будет
00:03:20
допустим допустим производить операции
00:03:23
над каким-то честными сложением
00:03:24
буквально и мы добавим метод который
00:03:29
будет складывать два числа 20-го числа
00:03:30
будет возвращать intel and by peter i
00:03:39
плюс b вот такой вот простейший класса
00:03:43
представим что здесь могло быть еще
00:03:44
другие операции ну да да давайте добавим
00:03:47
вычитание subtraction вот у нас есть
00:03:54
некий класс и обратите внимание что все
00:03:56
sharpie не нет совершенно никакой
00:04:00
возможности добавить метод не помещая
00:04:04
его в класс и вот у нас есть некий два
00:04:07
метода с которыми мы хотели бы работать
00:04:09
как мы можем с этим работать очевидно
00:04:14
что для того чтобы использовать объект
00:04:16
калька вот я пишу и наши методы не видно
00:04:20
я должен этот объект во первых как то
00:04:24
назвать вот мне подсказывает visual
00:04:25
studio калек и после того как я его
00:04:31
объявил будут внимание я должен выделить
00:04:34
память в памяти компьютера под мой
00:04:37
объект и это у нас за эту часть отвечает
00:04:42
у нас ключевое слово new для некоторых
00:04:44
примитивных типов
00:04:45
типа там целых чисел стрингов и тому
00:04:50
подобное да бульонов ключевое слово new не
00:04:52
используется на самом деле выделение
00:04:54
памяти тоже там происходит вы должны это
00:04:56
понимать но в данном случае у нас тип не
00:04:59
примитивным и только что его создали и
00:05:02
поэтому мы должны
00:05:03
в данном случае еще память не выделено а
00:05:06
если я сделаю вот так то я выделил
00:05:09
память и воля объект где-то там появился
00:05:15
в памяти то есть по моему шаблону
00:05:17
вот этому который я задал то есть мне
00:05:20
нужен некий объект который умеет
00:05:21
складывать и вычитать внутри него есть
00:05:24
такие методы и теперь я могу уже им
00:05:27
воспользоваться то есть у меня теперь и
00:05:29
вот эти методы
00:05:30
здесь они видны есть видны и другие
00:05:33
методы но это то что от массы далась от
00:05:36
объект если вы не знаете что такое обжиг
00:05:40
и наверно вы пропустили к данный урок
00:05:42
смотрите ссылка будет здесь и
00:05:46
значит смотрите ну вот мы возьмем и
00:05:48
добавим 5 плюс 5 ну очевидно что ответ
00:05:53
будет 10 можем запустится посмотреть что
00:05:56
все работает control 5 за запуск без
00:06:01
дебага
00:06:04
10 вы скажите причем тут стать
00:06:08
замечательно здесь нет стать и каким
00:06:10
обратите внимание на факт номер четыре
00:06:12
по умолчанию ключевое слово static
00:06:14
отсутствует у методов и у классов что
00:06:18
это для нас означает это для нас
00:06:21
означает что мы только что выделили
00:06:23
память для этого объекта и вот тут вот
00:06:26
начали его использовать до того как мы
00:06:28
выделили память мы не могли бы мы не
00:06:29
могли использовать этот объект теперь
00:06:33
представим такую ситуацию что мы где-то
00:06:36
там у нас вот здесь вот будет большой
00:06:38
кусок так как большой кусок программы
00:06:42
вот здесь у нас большой кусок программой
00:06:45
какой-то там и вот где-то тут вот хотим
00:06:51
повторно использовать коллег допустим и
00:06:54
сделаем такой трюк
00:06:56
мы инициализируем
00:07:00
еще один объект как два
00:07:05
заметьте что вы скажете а зачем мы вот
00:07:08
здесь уже его сделали бы можем
00:07:10
использовать
00:07:11
а что если мы об этом не знаем или уже
00:07:13
даже забыли а что если мы работаем
00:07:16
большой команде программистов много
00:07:19
совершенно не исключено что в этой же
00:07:22
области видимости ну там в этой же
00:07:24
области
00:07:25
части кода в общем появится еще второй
00:07:27
объект если мы кое-что не сделать
00:07:31
мы также можем здесь его использует то
00:07:34
есть он также точно будет складывать
00:07:37
числа и точно также будет выдавать ответ
00:07:41
правильный
00:07:42
так в чем же смысл то есть получается мы
00:07:45
по умолчанию если мы ничего не указываем
00:07:50
вот я уже потихоньку начинаешь провод
00:07:52
ключевое слово static
00:07:53
если мы ничего не указываем ту каждый
00:07:56
раз при инициализации этого объекта
00:08:00
принц или зация этого объекта создается
00:08:04
новая область памяти и в этой области
00:08:06
памяти
00:08:07
размещается наш метод ну там есть
00:08:10
кое-какие нюансы ну это такая для вас
00:08:12
должна быть модель
00:08:14
то есть вы благодаря этой модели сможете
00:08:16
хорошо понять то как работает конкретным
00:08:20
ключевое слово static
00:08:21
модель это когда не все прям супер как
00:08:25
она есть на самом деле of что-то там
00:08:26
упрощено
00:08:27
но это упрощение допущения позволяет нам
00:08:30
понять лучше изучаемый предмет
00:08:33
то есть вот этот объект и вот этот
00:08:37
объект это разные объекты для них
00:08:39
выделено разная память и они где-то там
00:08:42
существуют представьте что также
00:08:44
например у нас здесь было бы какой
00:08:46
нибудь еще ключевое слово сделаем и
00:08:52
рядом ли
00:08:55
например константа пи
00:08:57
соответственно в памяти также кроме
00:08:59
методов у нас будет выделен еще и
00:09:04
часть памяти будет занимать данные то
00:09:07
есть это например стать вот такая вот
00:09:10
константа то есть три целых 14 там и так
00:09:12
далее так далее бесконечная
00:09:14
непериодическая дробь но неважно значит
00:09:19
мы таким образом храним и методы и эти
00:09:23
данные где-то там в памяти но если мы
00:09:26
внимательно посмотрим на наш класс то мы
00:09:29
можем понять что этот класс не нуждается
00:09:32
ну в повторной инициализации потому что
00:09:35
что вот этот калькулятор что вот этот
00:09:38
калькулятор абсолютно идентичны по
00:09:40
своему функционалу
00:09:42
то есть мы очевидно не должны
00:09:45
производить повторную утилизацию как мы
00:09:48
должны об этом явно заявить как раз
00:09:51
смотрите если у нас такая ситуация что
00:09:53
мы понимаем что класс его содержимое его
00:09:57
методы
00:09:59
независимо от данных будут все везде
00:10:03
одинаковые
00:10:05
то мы можем можем то есть не обязаны а
00:10:10
можем потому что по умолчанию на это
00:10:13
ключевое слово отсутствует
00:10:15
мы можем прописать ключевое слово static
00:10:17
у класса
00:10:22
здесь сразу возникает много ошибок в
00:10:28
нашей программе
00:10:29
потому что компилятор языка кей написал
00:10:33
факт номер два
00:10:36
языки программирования сокова уровня
00:10:38
защищает нас от ошибок то есть мы сейчас
00:10:39
указали ключевое слово static у всего
00:10:42
класса
00:10:43
она напоминающим может быть и вот здесь
00:10:45
методов мы сейчас в этом поговорим
00:10:48
вернемся чуть позже и теперь получается
00:10:53
у нас
00:10:55
мы можем просто посмотреть что нам
00:10:59
говорит компилятор пятки натекла
00:11:01
инстансами и на стать класс то есть мы
00:11:05
не можем создавать экземпляры и методы в
00:11:07
статическом классе это говорит о том что
00:11:09
мы
00:11:10
раз мы сказали что наш класс статический
00:11:12
и наши методы тогда тоже статический
00:11:15
сейчас мы посмотрим что это означает и
00:11:18
20 и данные тоже статический здесь
00:11:23
обратите внимание компилятор перестал
00:11:26
ругаться
00:11:27
его устраивает то есть синтаксически все
00:11:29
корректно но здесь наша программа не
00:11:33
работает
00:11:34
поскольку мы сказали о том что этот
00:11:37
класс не должен быть повторно
00:11:39
инициализируем том что он очевидно что
00:11:41
он одинаково работает и в одном вдруг
00:11:44
том случае то мы теперь вот эту часть
00:11:50
должны убрать потому что он теперь
00:11:53
статический и как выделять через
00:11:58
ключевое слово new память для этого
00:11:59
объекта теперь ему запрещено
00:12:01
просто потому что это означает что в
00:12:04
данном случае класс может существовать
00:12:07
находиться в памяти компьютера в одном
00:12:11
единственном экземпляре и
00:12:14
для нас это означает вот как
00:12:16
программистов что мы можем
00:12:18
непосредственно использовать начинать
00:12:19
этот класс без инициализации то есть
00:12:24
если мы сделаем вот так то все
00:12:28
замечательно заработает десятка что это
00:12:34
означает на практике то есть во-первых
00:12:36
обратите внимание что используя ключевое
00:12:40
слово static
00:12:41
на синтаксические более эстетично все
00:12:45
вот это выглядит то есть вместо
00:12:47
нескольких строк кода создай объект
00:12:50
таким-то именем потом поэтому имени вую
00:12:53
используй мы сразу по имени класса
00:12:57
используем наш метод
00:12:59
но на самом деле внутри внутри
00:13:02
за вот этим всем все равно стоит
00:13:05
инициализация выделения памяти но просто
00:13:08
программист теперь за нее не отвечает мы
00:13:10
не говорим когда это произойдет мы
00:13:12
просто начинаем этот класс использовать
00:13:16
и
00:13:17
платформы тут нет нам гарантирует что к
00:13:20
тому моменту когда мы будем использовать
00:13:21
этот класс объект будет
00:13:25
проинициализирован вот это что нам нужно
00:13:27
знать то есть мы сами не к не отдаем
00:13:29
команду когда нам выделить память она
00:13:32
будет выделена в этом можете не
00:13:34
сомневаться то есть никаких проблем
00:13:36
здесь вы не увидите и точно так же мы
00:13:41
теперь этот класс можем использовать
00:13:44
многократно
00:13:48
без имени тут же наш константах доступно
00:13:53
а не константа на самом деле ну смысл в
00:13:58
чем что и методы и данные здесь есть у
00:14:03
меня есть урок класса как контейнеры
00:14:06
тоже посмотрите я там не делал акцент я
00:14:09
не разбирался но ключевое слово static
00:14:11
но я показал что классы могут внутри
00:14:14
себя содержать
00:14:15
методы и просто потому что во первых
00:14:19
методы не могут быть воздухе но как раз
00:14:21
в общем то можно частично я про эту тему
00:14:23
посмотреть если забыли посмотрите но там
00:14:27
я нигде не разбирал ключевое слово
00:14:29
static искал просто сделайте так и все у
00:14:32
вас будет хорошо до какой-то степени мы
00:14:37
посмотрели вот такой простой класс
00:14:38
калькулятор теперь давайте еще раз
00:14:42
вернемся к теме то есть получается мы
00:14:45
включили static и этот класс теперь не
00:14:50
может быть про нецензированная мы не
00:14:53
можем сами вызвать конструктор и
00:14:56
выделить память он будет сам где-то там
00:14:59
обработан и теперь где бы мы не
00:15:01
использовали этот класс калька в нашем
00:15:05
приложении
00:15:06
он будет использоваться единообразно то
00:15:10
есть он будет один вовсю приложение
00:15:14
кстати говоря в реальных проектах такие
00:15:17
классы это как правило какие не
00:15:19
конфигурационные настройки какие классы
00:15:21
утилиты и так далее и тому подобное то
00:15:24
есть когда мы допустим один раз защиту
00:15:27
вы наши настройки из конфига но с
00:15:30
какого-то файла на жестком диске
00:15:32
они переносятся в памяти дальше мы их
00:15:34
используем на протяжении всего
00:15:36
предложения на не приходится каждый раз
00:15:38
инициализировать этот объектами просто
00:15:40
его используем у нас он есть это удобно
00:15:43
это просто за ну как бы освобождает от
00:15:45
лишних телодвижений и
00:15:47
это экономит память компьютера теперь
00:15:50
давайте возьмём другой пример персон и
00:15:58
возьмем здесь этот объект
00:16:01
он уже должен быть в нескольких
00:16:06
экземплярах сейчас объясню то есть у нас
00:16:07
есть человек допустим очевидно что 1
00:16:10
человека другого отличается вот у нас
00:16:12
есть допустим человек у него есть
00:16:15
возьмем используем properties и у него
00:16:19
будет first name то есть имя фамилия
00:16:26
отчество
00:16:31
давайте вот что не будем чтобы просто
00:16:34
пример лучше покороче и используем еще
00:16:36
ему добавим дату рождения звезды и
00:16:43
добавим метод этот мид у нас get it то
00:16:51
есть будет возвращать возраст некого
00:16:54
человека в годах допустим сделаем
00:16:57
простейшую реализацию потому что есть
00:17:00
нюансы как это на самом деле вычисляется
00:17:02
ну сделаем попросту
00:17:12
по какой пётр свернем вот здесь значит
00:17:16
это мы оставим нибудь напишет
00:17:19
и смотрите вот у нас есть очевидно
00:17:22
человек давайте добавим нет не будем
00:17:26
конструктору добавлять пока вот у нас
00:17:29
есть некий каркас по которым мы будем
00:17:33
создавать
00:17:34
объект типа пирса и этот объект
00:17:38
он очевидно что 1 человека другого
00:17:42
отличается как я уже сказал то есть это
00:17:43
выглядит и будет на практике так person
00:17:47
обратите внимание поскольку static не
00:17:50
указано он сразу мне предлагает создать
00:17:54
переменную с таким именем и я могу
00:17:57
вызвать конструктор
00:17:58
то есть конструктор данном случае
00:18:01
выделяет просто память под этот объект
00:18:03
это там он размещается и
00:18:05
для того чтобы сразу этот объект
00:18:08
заполнить какими-то нами можно
00:18:10
использовать просто последовательно
00:18:13
заполнение всех свойств можно вот здесь
00:18:15
указать эти свойства сразу фигурных
00:18:19
скобках мы можем сейчас здесь мы
00:18:36
потеряли с ним вот у нас есть объект и
00:18:42
давайте сразу проверим что у нас ведь
00:18:44
где-то еще работает
00:18:53
не работает
00:18:59
вот теперь работает минус потерял то
00:19:02
есть грубо говоря вот я за выставил
00:19:04
возраст по текущему дню 30 минус 30 то
00:19:07
есть соответственно 30 лет мы получили
00:19:09
это примитивный метод потому что он
00:19:12
учитывает там високосного года и всякие
00:19:14
там нюансы но для нашего примеру чем но
00:19:16
пойдет и вот у нас есть один человек
00:19:21
есть допустим порой человек в данном
00:19:27
случае очевидно что мы должны создать
00:19:34
второй объект потому что у нас ну как бы
00:19:39
люди-то разные не свои данные у них
00:19:42
какая-то своя специфика есть и здесь и
00:19:46
соответственно у нас сразу к петр
00:19:48
ругается вот давайте как-то
00:19:51
одинаково чтоб они не назывались вот мы
00:19:55
создали давайте тоже возраст мы видим
00:20:01
так этот калькулятор осталось вот 3020
00:20:05
утра давайте пока закомментируем тут все
00:20:12
понятно как бы казалось бы ну вот у нас
00:20:16
есть объект что будет если мы сделаем
00:20:20
его
00:20:21
static по умолчанию то она отсутствует
00:20:25
то есть мы вот если здесь прописали мы
00:20:27
фактически сразу запрещаем здесь
00:20:29
выделять память а нам нужно то есть значит мы не можем
00:20:35
использовать ключевое слово static
00:20:38
потому что у нас два разных объектов в
00:20:40
этой память должна быть выделена а что
00:20:42
если мы пропишем ключевое слово static у
00:20:45
метода вот я
00:20:46
прошлый премьер он у нас был пример
00:20:49
целиком посвященный тому что вот мы весь
00:20:52
класс закрыли static как только мы
00:20:54
прописали у всего класса static сразу же
00:20:57
все что находится внутри класса тоже
00:20:59
становится static ну то есть точнее мы
00:21:00
должны
00:21:01
явно это указать то есть иначе будет
00:21:04
ошибка то есть вот что произойдет если
00:21:06
мы здесь объявим метод статическим get
00:21:10
rich вот смотрите
00:21:12
что произошло появилась программе три
00:21:15
ошибки и здесь вот написано о том что
00:21:21
если это статический метод то этот метод
00:21:25
не должен использоваться от экземпляры
00:21:28
то есть если он статически то вот он уже
00:21:34
на этом уровне находится то есть метод
00:21:37
get rich он не зависит какого-то от
00:21:42
конкретного объекта а он как бы доступен
00:21:44
сразу для всех но нашу программу эта
00:21:49
ситуация не спасет если я сейчас возьму
00:21:51
здесь заменю везде
00:21:52
программа не будет работать потому что
00:21:55
наш метод вычислять вычисляю щий возраст
00:21:58
он явно зависит от данных этого объекта
00:22:01
то есть вот здесь нам как компилятор вот
00:22:04
это и подсказывает у нас есть дата
00:22:07
рождения и дата рождения выставляется
00:22:09
для каждого раз для каждого объекта своя
00:22:12
мы не можем использовать ключевое слово
00:22:15
static потому что в данном случае мы не
00:22:20
имеем права залезать в данные
00:22:23
конкретного экземпляра то есть в данном
00:22:25
случае компьютерном явно об этом говорит
00:22:28
то есть если мы хотим здесь использовать
00:22:31
static to be сдай мы не можем трогать то
00:22:35
есть в данном случае мы не можем
00:22:37
использовать стать или потому что метод
00:22:41
вот этот метод он зависит от конкретных
00:22:43
данных конкретных данных
00:22:48
давайте какой может быть здесь пример
00:22:51
чтобы мы могли использовать стасик
00:22:54
представим что у нас есть какой-то у нас
00:22:58
точно так у нас должен быть какой-то
00:23:00
метод который зависит в целом то есть
00:23:04
тот который в целом для всех person
00:23:07
будет справедлив не для конкретных вот
00:23:09
иванова или петрова а для всех для всех
00:23:12
вообще в целом person например мы
00:23:14
возьмем общую продолжительность жизни
00:23:18
как человека как вида на прям
00:23:21
ну и щедро отвесим 150 лет как это может
00:23:26
выглядеть с точки зрения
00:23:27
программирования мы можем сказать что у
00:23:31
нас
00:23:34
макс
00:23:42
h150
00:23:44
и если мы опять-таки смотрите по
00:23:47
умолчанию ключевое слово static
00:23:48
отсутствует
00:23:50
то есть это означает что если я сейчас
00:23:52
возьму person to у него здесь есть
00:23:56
теперь макс each метод и у персон 2 есть
00:24:01
макс речь но очевидно смотрите по
00:24:09
здравому смыслу что вот этот метод и вот
00:24:12
этот метод это одно и то же для обоих
00:24:16
объектов совершенно нет то есть как бы
00:24:19
вот на внутренние данные этого
00:24:22
экземпляра
00:24:23
эти этот метод никак не завязан и
00:24:26
с точки зрения компьютера расточительно
00:24:29
хранить в памяти два метода для каждого
00:24:34
то есть для каждого
00:24:36
этого экземпляра чтобы у свой метод get
00:24:39
макси
00:24:40
мы этот вопрос когда мы понимаем по
00:24:43
здравому смыслу что этот метод он
00:24:45
очевидно
00:24:46
общий для всех мы сами идём и ручками
00:24:49
включаем static то есть по умолчанию
00:24:51
компьютер за на сам того не он этого не
00:24:54
знает точнее как он может конечно
00:24:56
предположить что этот метод не зависит
00:24:58
от внутреннего состояния но он в это
00:25:00
такие вещи нам не советуют и не вникать
00:25:02
то что сейчас у не зависит а через пять
00:25:04
минут мы уже добавляем то от чего он
00:25:06
зависит и уже тут мы сами решаем
00:25:08
соответственно мы берем говорим так мы
00:25:11
осознаем что этот метод он будет
00:25:15
одинаковый для всех объектов типа person
00:25:20
раз он одинаковые мы его объявляем
00:25:23
static и соответственно получаем что
00:25:28
здесь во первых у нас нет никаких ошибок
00:25:30
а вот здесь у нас уже ошибки создали
00:25:33
себе определенная грань
00:25:34
пение и язык программирования вот по
00:25:36
факту 2 да он нас защищает от ошибок то
00:25:40
есть раз мы сказали что это static тогда
00:25:42
уже давайте-ка вы ребята не обращайтесь
00:25:45
через экземпляры хотя в принципе они
00:25:47
могли бы сделать чтоб она бы работал но
00:25:50
тогда с точки зрения чтения кода это
00:25:53
будет некрасиво то есть ну как бы то
00:25:56
есть теперь метод наш находится вот
00:25:58
здесь и это нам явно говорит что этот
00:26:04
метод не как зависит никак не зависит от
00:26:07
данных конкретного экземпляра
00:26:09
этого объекта это все на самом деле про
00:26:14
память потому что наша задача сделать
00:26:18
так чтобы мы потребляли меньше памяти но
00:26:21
и ко всем прочим ну синтаксически
00:26:24
согласитесь что когда мы точно знаем что
00:26:26
метод он не зависит от внутреннего
00:26:31
состояния ну вот так его использовать очевидно
00:26:35
удобнее как бы писать меньшей ну и как
00:26:39
бы код становится читабельный то есть мы
00:26:40
когда вот видим такую конструкцию в коде
00:26:43
мы очевидно сразу понимаем что это
00:26:45
метастатический то есть он не зависит от
00:26:48
внутреннего состояния но стоит нам
00:26:50
только сюда внести какую-то зависимость
00:26:56
например если у нас мы сюда бы ввели
00:27:00
например зависимость от какого-то от
00:27:02
профессии например что есть вредные
00:27:05
профессии есть не очень там вредный и
00:27:09
например там какие то там профессии если
00:27:12
человек допустим сварщик у них там на и
00:27:15
знамени на 5 уходит лет на десять раньше
00:27:17
это неспроста подошва вредные газы все
00:27:19
такое то есть мы могли бы например сюда
00:27:21
ввести дополнительную проверку
00:27:25
если там что-то там профессия
00:27:31
специальные солить epcot наверно ну
00:27:37
допустим правильно дин тогда мы сделаем
00:27:43
youtube 140 скинем 10 лет иначе иначе и
00:27:55
вот здесь допустим выставим этот код но
00:28:05
компилятор нам сразу говорит что типа
00:28:08
код специальности там в равен единице
00:28:10
значит это вредная профессия допустим и
00:28:12
тогда мы скидываем 10 и
00:28:14
но компилятор нам сразу говорит не
00:28:18
ребятки у вас static вы сказали когда
00:28:21
ввели это ключевое слово что этот этот
00:28:24
метод не зависит внутреннего состояния
00:28:27
от а тут мы ввели зависимость то есть мы
00:28:30
ввели некую переменную внутри properties
00:28:32
property данном случае выбили переменную
00:28:35
внутри и взяли и сделали зависимость тут
00:28:41
все мы должны выключить
00:28:42
ключевое слово static убрать силу раз
00:28:45
стать по умолчанию то есть теперь у нас
00:28:47
максим снова здесь не доступен
00:28:50
и теперь мы можем вам использовать
00:28:54
только через конкретно экземпляр
00:29:00
то есть person вместо get rich вот здесь
00:29:03
мы можем использовать максович если мы
00:29:09
запустим то в одном случае из офиса
00:29:10
другом случае с узор как то так то есть
00:29:16
еще раз
00:29:18
static это про память и в то же время
00:29:23
про удобство использования прочтения
00:29:27
кода про то как мы пишем этот код потому
00:29:31
что в одном случае нам мы сразу видим
00:29:33
что происходит зависит объектов
00:29:35
внутреннем состоянии не зависит и static
00:29:39
может применяться как бы подведем итоги
00:29:41
до полностью ко всему классу он
00:29:44
закрывает весь класс
00:29:45
это означает что все что внутри него
00:29:47
общие для всего предложения и она вот
00:29:50
это то что там внутри него
00:29:51
инициализируется когда-то там до первого
00:29:54
использования ли во время нашего перо и
00:29:55
использование но мы сами не
00:29:57
инициализируем не выделяем память
00:29:59
если же у нас смешанный класс то есть у
00:30:03
нас есть обычный класс который будет
00:30:06
создавать свои экземпляры как класс
00:30:08
person но у него есть например
00:30:11
статический метод
00:30:12
то для нас это говорит о том что этот
00:30:17
метод который находится внутри этого
00:30:19
класса не зависит от конкретно каких-то
00:30:22
данных внутри в данном случае мы уже
00:30:25
вели зависимость то есть вот теперь он
00:30:31
снова у нас не зависит
00:30:32
но обратите внимание что компилятор в
00:30:36
эту кухню сам не лезет вот он не зависит
00:30:38
но пока мы явно об этом ему не скажем
00:30:41
все сделал его static вот только тогда
00:30:44
когда мы это явно указали он и будет нас
00:30:50
требовать чтобы мы не использовали этот
00:30:52
метод через экземпляры пока что все
00:30:55
хорошо вот у может использоваться в
00:30:57
данном случае просто
00:30:58
это немного нелогично то есть мы
00:31:00
нарушаем логику вот в этом смысл static
00:31:03
надеюсь данный урок был полезен и я смог
00:31:07
объяснить эту тему тема нас то
00:31:09
достаточно важное и объявил часто
00:31:13
спотыкаются новички
00:31:14
если остались какие то вопросы и вам все
00:31:17
таки что то непонятно где то напишите
00:31:18
потому что я смогу то скорректировать
00:31:20
свои будущие видео и учесть как-то вот
00:31:24
какие то непонятные моменты потому что
00:31:26
то что для меня очевидно для вас может
00:31:28
быть вообще не очевидна и нет это бы об
00:31:30
этом нужно знать ну и в целом можете
00:31:34
какие-то другие вопросы задавать
00:31:35
комментариях ставим лайки если видео
00:31:39
понравилось подписывайся если не
00:31:41
подписались не забываем поставить колокольчик для
00:31:44
того чтобы уведомления приходили о новых
00:31:46
видео всем пока
00:31:48
давайте расти вместе

Описание:

Всего лишь одно ключевое слово "static" подумаете вы?! Но оно действительно заслуживает отдельного урока т.к. тема важная и об нее достаточно часто спотыкаются начинающие программисты. Ну и на собеседовании вас почти наверняка спросят об этом т.к. этот вопрос позволяет понять как глубоко вы вникли в программирование или же ограничились поверхностными знаниями. ------------------- Ваше участие очень важно для развития моего канала. Самое мало, что вы можете сделать это поддержать канал любым доступным вам способом: лайк, комментарий, подписка. Меня это мотивирует на продолжение работы, а вам ничего не стоит. Станьте спонсором канала, и вы получите доступ к эксклюзивным бонусам. Подробнее: https://www.youtube.com/channel/UCrKUQBc3GMnhwzUlbZRssWA/join Личные вопросы о помощи в программирование и построении карьеры в IT можно задавать тут http://sberegovoy.ru//mentor/ -------------------- Оставайтесь на связи: Мой сайт - http://sberegovoy.ru Вступайте в телеграмм канал - https://t.me/sberegovoy Группа в телеграмме - https://t.me/group_sberegovoyru Вступайте в группу ВК - https://vk.com/sberegovoyru #ityoutubersru

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "C# урок №15 - ключевое слово static. Статические классы и методы."?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "C# урок №15 - ключевое слово static. Статические классы и методы." выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "C# урок №15 - ключевое слово static. Статические классы и методы."?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "C# урок №15 - ключевое слово static. Статические классы и методы." на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "C# урок №15 - ключевое слово static. Статические классы и методы."?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "C# урок №15 - ключевое слово static. Статические классы и методы."?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.