Free YouTube Transcribe

Video transcript

ОПЕРАТОР ОБЪЕДИНЕНИЯ С NULL С# | C# ?? | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | # 40

#SimpleCode · 2,171 words · 10 min read

Want to search this transcript, jump the video from any line, or download it as TXT, SRT, or VTT?

Open in the transcript tool

Full transcript

0:00приветствую вас друзья меня зовут сергей

0:01мы с вами продолжаем изучать язык

0:03программирования си sharp и сегодня мы с

0:05вами будем разбираться в том что такое

0:07модератор на объединения то есть вот

0:09такая вот штука для чего нужен и как его

0:11использовать не забудьте подписаться на

0:13канал и жмакнуть колокольчик чтобы не

0:15пропускать новые уроки но и

0:17непосредственно к делу

0:18данный оператор это просто

0:19синтаксический сахар то есть добавляет

0:21удобства при написании кода и задачи

0:24этого синтаксического сахара этого

0:26оператора является возможность установки

0:29дефолтного значения для типов данных

0:32которые допускают значение

0:34то есть для ссылочных типов то есть для

0:36класс сегодня мы рассмотрим несколько

0:38примеров его использованием от самых

0:40простых в пару строчек кода да немного

0:42более сложных на примере десктопного

0:44приложения написанного на winforms

0:46скажем так в условиях более приближенных

0:49к реальности когда вы занимаетесь

0:51разработкой реального приложения у вас

0:53часто возникает ситуация когда вы

0:55получаете данные из какого-то внешнего

0:56источника допустим это может быть базы

0:59данных это может быть какой-то ящичек и

1:01запрос какому-то api который высылает

1:04вам данные и по потом с ними работаете в

1:07принципе не важно каким образом вы

1:08получили эти данные но когда вы

1:10работаете со ссылочными типами

1:12существует вероятность что вместо

1:14реальных данных вы получите нал кстати

1:16если вы не знаете что такое налто

1:18рекомендую посмотрите прошлый урок там

1:20мы все это подробно разбирали ссылку

1:21найдете в описании так вот если вы

1:23получаете нал это означает что вы не

1:25получили каких-то реальных данных и

1:27часто возникает необходимость каким-то

1:28образом эту ситуацию обработать например

1:31иметь какое-то дефолтное значение

1:32давайте сначала рассмотрим проблему а

1:34потом уже применение оператор на

1:36двадцать третьей строчке кода у нас есть

1:38строка кода мы поместили значение тесты

1:40мы просто всюду делу выводим в консоль

1:42все прекрасно работает но что если у нас

1:44по какой-то причине в строке не реальное

1:46значение

1:48а вот нам пришел туда нал давайте

1:50запустим до баги

1:51двадцать пятой строчке кода breakpoint

1:54переменный стр у нас нал ну в

1:57зависимости от ситуации как построен код

1:59который будет у нас работать с этой

2:01переменной мы либо же вообще получим

2:02ошибку потому что попытаемся обратиться

2:04к данным которых нет либо же если hots

2:07который работает с такой переменная

2:09имеет какую то обработку этой ситуации

2:11как вот например метод writeline класса

2:12консоль

2:13там и просто ничего не получим у нас был

2:16на у то есть данных гибких не было и у

2:18нас ничего не вылилось

2:19но допустим нам случае если мы не

2:21получили никаких данных нужно как-то об

2:23этом сообщить пользователю чтобы мы

2:25предприняли исходя из тех знаний которые

2:28у нас есть сейчас как минимум нужно было

2:30бы добавить какую-то проверку на

2:33если значение которое хранится нашей

2:35переменной равно нал там он был выводили

2:37какое-то сообщение и найти в другом

2:39случае выводили бы именно те данные

2:41которые нам поступили в таком случае

2:44если у нас нашей переменной нал получаем

2:47сообщение нет данных

2:48если там не нал получаем наши данные

2:51либо уже второй вариант завести вторую

2:54переменную и все равно у нас сохраняется

2:56тоже проверка если в переменной стр у

2:59нас нет данных там ноутом и в нашу новую

3:01переменную присваиваем сообщения нет

3:02данных если же в переменной стр все таки

3:05данные были то у нас нашу новую

3:06переменную присваиваются те данные

3:08которые были старые переменные только

3:10после этого все это дело выводится на

3:12консоль реализация немножко другая но

3:14работает точно так же сейчас нас

3:16переменная стр слова тест получаем на

3:18вывод тест если у нас переменный стерн

3:21all получаем сообщение нет данных в

3:23любом случае что то что тот вариант

3:25реализации добавляет нам довольно много

3:28кода всего лишь для того чтобы проверить

3:30данные в одной-единственной переменной и

3:32установить для нее дефолтное значение

3:34соответственно именно для таких целей и

3:36был придуман операторного объединения

3:39вот эти два ? а он позволяет нам по

3:41факту реализовать а то же самое

3:43поведение которое мы делали вот этими

3:45двумя способами только гораздо гораздо

3:47меньшем объеме

3:48давайте этим с вами и займёмся ударим

3:52весь этот код и используем операторного

3:54объединения у нас есть переменная эстер

3:56которую мы хотели бы проверить на нам

3:58соответственно после этой переменной

4:00нам нужно описать два вопросительных

4:02знака тот самый операторного объединения

4:04и после них добавить дефолтное значение

4:07наше дефолтное значение была фраза

4:10то есть строка нет данных обращаю ваше

4:13внимание на то что если у нас тип данных

4:15string

4:16той дефолтное значение должно быть того

4:18же типа данных если бы у нас был

4:20какой-то другой тип данных ссылочный

4:22который позволяет значение она латает

4:23дефолтное значение должно было

4:25соответствовать там

4:25типу данных это проверка заняло всего

4:27лишь в парочку символов запустим наш код

4:29сейчас у нас в стр но соответственно мы

4:32должны получить сообщение нет данных

4:35мы его и получаем но если мы сюда

4:37добавим какую-то фразу например тест в

4:40нашу переменную str то мы получим нашу

4:43фразу тест для наглядности для того

4:45чтобы посмотрите добавки как это

4:46работает давайте результат работы этого

4:48оператора будем сохранять все таки

4:50отдельных переменных резал хотя в этом

4:51нет необходимости то просто для

4:53наглядности и посмотрим что у нас будет

4:56происходить где баги на двадцать пятой

4:58строчке кода на за breakpoint

4:59смотрите в переменные сторона сейчас

5:01тест соответственно пустой как у нас

5:03работает этот оператор в переменную

5:05резал помещается значение тест в строка

5:08тест и далее мы выводим ее на консоль

5:10можно не делать этого

5:11если у нас здесь но

5:14вот сейчас переменный стр нал после того

5:16как будет выполнена работа этого

5:18оператора переменную резалт у нас

5:20поместилось наше духовное значение нашим

5:22дефолтным значением является фраза нет

5:24дам видите довольно просто и полезно для

5:26того чтобы по глубже разобраться в

5:28вопросе рассмотрим еще одну ситуацию у

5:30нас даже самая переменная стр с фразой

5:33тест который помещена строка тесты и мы

5:36просто выводим на консоль количество

5:38символов в этой строке и того чтобы

5:40получить количество символов в строке

5:41нам нужно обратиться к свойству лэнс о

5:44переменной стр через точку но выполнив

5:47код мы получаем информацию о том сколько

5:48у нас символ в строке тратит очень

5:51допишем ну и соответственно все работает

5:54но если у нас вдруг случилось так что у

5:57нас здесь нал если мы запустим такой код

5:59мы получим исключения на reference

6:01exception почему это происходит мы с

6:04вами обсуждали в прошлом уроке но если

6:06коротко мы пытаемся обратиться к

6:08свойству лэнс

6:09у объекта которого не существует

6:11управляемой кучи так вот данном случае

6:13мы бы могли поступить таким образом мы

6:16бы могли использовать промежуточную

6:18переменную rezound

6:19и присваивать туда нашу переменную str

6:22и в случае если бы у нас переменная стр

6:26был нал мы бы присваивали туда пустую

6:28строку пустая строка это все-таки уже

6:31денал эта строка в которой просто нету

6:33символов и здесь соответственно

6:34обращаюсь blackalex так вот если бы мы

6:37делали это вот таким образом то вместо

6:40исключения анавара франц эксепшен мы бы

6:42получили число ноль что нашей строке 0

6:45символов еще один маленький момент

6:47помимо того что нам просто можем указать

6:49к дверь кавычки без символа внутри для

6:52того чтобы создать пустую строку мы

6:55можем обратиться к типу данных string

6:57который является алиасом для класса

7:00string то есть псевдонимом и через точку

7:04обратиться к его на свойства empty

7:06результат работы программы будет тот чем

7:08в переменную resort будет присвоен а

7:10пустая строка то есть без символов но

7:12как бы ваше намерение по ходу будут

7:15более ясные здесь явно видно что вот

7:17хотите присвоить сюда именно пустую

7:18строку

7:19они просто забыли добавить что тор

7:21кавычки если мы вас начальной переменной

7:23стр изменим значение сна у допустим на

7:26тесты запустим то наша программа

7:27работает как прежде на самом деле

7:29подобную проблему можно решить без

7:32дополнительной переменной для этого

7:33требуется использовать оператор

7:35условного на лт моего мы с вами

7:36рассмотрим в следующем уроке более

7:38подробно и эту же ситуации тоже раз

7:40внутрь теперь рассмотрим пример немного

7:42более приближены к реальности сильно

7:44упрощенный но тем ни менее

7:46более приближенный для этого я создал

7:48дополнительный проект который у нас

7:50будет работать на winforms в этом же

7:52solution пример который у нас

7:54представлен здесь и по продвижению в

7:56изучении языка программирования си sharp

7:58гораздо дальше чем мы зашли но тем не

8:01менее я считаю его будет уместно здесь

8:03добавить для того чтобы более наглядно

8:04проиллюстрировать применение

8:06оператора на объединение сначала просто

8:08запустим нашу программку посмотрим что

8:10она делает здесь обычная формочка

8:12формочки есть ли xbox задача

8:14elementalist бокс просто уводить

8:16элементы построчно и есть кнопочка ран

8:19которая запускает все это дело и все

8:21если мы запускаем кнопочку ран у нас

8:25формируется список из нескольких человек

8:28который должен вывести их фамилию имя и

8:32отчество

8:34но не у всех людей из этого списка есть

8:36отчества как видите отчество есть только

8:38у одного человека о 1 у двух других его

8:41нету и соответственно это вполне

8:43реальная ситуация когда вам может

8:46потребоваться вместо

8:48отсутствие просто отсутствие информации

8:51вывести какую-то фразу например нет

8:53данных или без отчества или что-то

8:55подобное давайте посмотрим что у нас там

8:58под капотом информация о человеке где

9:01она содержится фамилия имя отчество

9:04имплементировать классы парсон поля

9:06first name middle name is секундные

9:09это наше имя отчество и фамилия классе

9:12торсон у нас есть метод get full name

9:15задачи которого сформировать и вот ту

9:18самую запись одну запись о человеке

9:21которую мы в итоге получаем вот сюда

9:24соответственно именно вот этот код нам

9:27не нужно будет модифицировать далее

9:29посмотрим на код который у нас

9:30непосредственно выводит все это дело на

9:32экран у нас есть обработчик события

9:35нажатия на кнопки здесь у нас происходит

9:37очистка нашего списка

9:40если это может до этого были какие-то

9:42запись например если несколько раз

9:44же макнули по наши кнопочки чтобы у нас

9:46записи не просто добавлялись скал

9:47удалялись старые дальше на тридцать

9:49шестой строчке кода у нас вызывается

9:50метод get парсон который получает список

9:53объектов класса персон в котором

9:55хранится вся информация по фио каждого

9:58низу людей которые там есть далее весь

9:59этот список перебирается в цикле foreach

10:02и для каждого элементом то есть для

10:05каждого человека и у каждого человека

10:07вызывается метод get full name

10:09реализацию которого мы смотрели который

10:11собственно и формирует запись для нашего

10:13списка и

10:14в наш лист бокс в его список добавляется

10:17достройка которая у нас сформировалась

10:19после вызова метода get fun и

10:22метод get a person's с помощью которого

10:24мы получаем список людей с их фио

10:26это скажем нас некая заглушка здесь

10:28могла побыть обращения к базе данных

10:30либо же какому-то

10:32то есть обращение к кому-то внешнему

10:34источнику ну понятно дело для данного

10:35примера нам это не нужно мы здесь просто

10:38создаем новый список объектов персон и

10:41каждому вручную присваиваем фамилии имя

10:44и отчество

10:45но у некоторых этого поля и дал нам

10:47просто нет есть такие люди у которых

10:49вообще не творчество на самом деле

10:51реальная ситуация в реальных проектах

10:53такое тоже случается так вот как мы уже

10:55видели когда мы все это запускаем у нас

10:57вводится информация по этим людям и

10:59соответственно у некоторых людей

11:01информации об отчестве нет нам нужно

11:04изменить поведение нашей программы таким

11:05образом чтобы эта информация появлялась

11:07соответственно вот этот метод который

11:10для каждого человека у нас формирует

11:12полная фио полную запись где табличка

11:14listbox

11:15мы должны модифицировать и мы с вами

11:17должны сделать так чтобы в случае

11:19отсутствие отчество ростом выводилось к

11:21примеру фраза нет данных тут также к

11:23этому делали в более простом примере

11:25давайте сейчас представим что мы ничего

11:27не знаем об операторе на объяснения

11:29соответственно в таком случае нам

11:31придётся сделать вот что нам придется

11:33про

11:345 поле middle name канал и по факту если

11:38у нас гвидона и minolta вместо самого

11:40middle name а мы должны выводить фразу

11:43нет данных другом же случае возвращать

11:46строку в том формате какая у нас и было

11:48там где у нас была полями донной

11:50запустим как видите танк теперь у нас

11:52выводится отчества запись о том что нет

11:54данных но смотрите на самом деле это уже

11:56не очень удобно потому что код у нас

11:58разбросе а теперь представьте что нам

11:59похоже примерку пришлось бы сделать еще

12:01под фамилию и под имя то есть кот бы у

12:04нас разрастался очень сильно мы можем

12:06все это не делать она же просто

12:07использовать оператор на объединения как

12:10мы это уже с вами делали и просто

12:11немножко модифицировал вход вот таким

12:13образом получить тот же самый результат

12:15много раз до проще в принципе нам не

12:17составит труда вообще вся и сделать то

12:19же самое для фамилии и для имени

12:22ну правда у нас сейчас там везде есть

12:25данным

12:27допустим если мы пойдем тот метод где у

12:30нас все это дело заполняется и добавим

12:32еще какого-то персонажа и допустим

12:34заполни не только имя и напишем туда а

12:37много

12:37мы видим все это дело

12:40соответственно там где у него фамилия

12:41там будет фраза нет данных имя новыми

12:44отчество нет данных

12:45весь код данного урока для патронов

12:47канала с доступом к исходникам пули

12:49доступен на патреоне если вам понравился

12:51данный урок он был для вас полезным и

12:53интересным не забудьте поставить лайк

12:55под этим видео если у вас есть желание

12:56поддержать меня и канал финансовая

12:58информация там как это сделать найдете

13:00внизу в описании буду рад если потеряете

13:02с этим уроком ну и конечно если вы ещё

13:04не подписались на канал то обязательно

13:05подписывайтесь здесь уже есть и будет

13:07еще много полезных и интересных уроков

13:09для вас всем спасибо за внимание пока

More from #SimpleCode

Recently added transcripts

Browse the whole transcript library

This transcript was generated from the captions YouTube publishes for this video. Get the transcript of any YouTube video atfreeyoutubetranscribe.com, free, unlimited, no sign-up.