Тёмный

C# Events События 

codaza
Подписаться 23 тыс.
Просмотров 52 тыс.
50% 1

Опубликовано:

 

30 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 129   
@codaza-channel
@codaza-channel 3 года назад
Удобная навигация по видео :) 0:00 - Начало 0:37 - Про делегаты 1:13 - Механика event 2:15 - Зачем нужна обёртка над delegate? 4:28 - Анатомия объявления event 5:50 - Техника использования event 7:35 - delegate vs event 13:30 - Завершение
@chinchilla898
@chinchilla898 3 года назад
Очень хорошее объяснение. Везде пишут технические детали, но никто не пытается поговорить о сути. Сейчас у меня все прояснилось. Спасибо! Делаю репост!
@codaza-channel
@codaza-channel 3 года назад
Супер! Здорово, что Вы почувствовали суть event 👍
@mestnq5553
@mestnq5553 2 года назад
странно что так мало подписчиков.. очень годные видео, продолжайте!
@КонстантинСивков-п4в
Видно что очень много сил вложено в видеоурок. Ваши объяснения очень отличаются от всего остального, что можно найти на просторах ютуба именно тем, что Вы в первую очередь стараетесь донести суть, а не сухую теорию. Большой спасибо за Ваши ролики!
@codaza-channel
@codaza-channel 2 года назад
Благодарю за тёплый комментарий 💙 Очень рад, что ролик оказался полезным. Главная цель канала codaza - доступное изложение непростых концепций понятным языком.
@РоманВолженин-я6л
Лучший канал по программированию! Жаль, что заброшен
@ГришаГрибов-я3д
@ГришаГрибов-я3д 11 месяцев назад
Да, канал шикарен! Авторы красавцы.
@ВячеславСотников-з8с
Respect for explanation the difference between a delegate and an event.
@codaza-channel
@codaza-channel 3 года назад
You are welcome :) Thank you for the comment!
@hmixa
@hmixa Год назад
Дико извиняюсь но тема не вся раскрыта. Не услышал главное отличие event-a от delegate-a. А оно принципиальное! Это я пишу для Ваших подпищиков. Делегат это поля класса, как было правильно замечено, как любое плен типа int или string. A event это всегда свойство! С двумя не явными setter-ом и getter-ом, а иногда и явными и приватным полем типа delegate. Вот поэтому подписаться на событие и отписаться можно и из вне класса, а то вызвать только изнутри, и это правильно! И только по этому, именно как property он (event) может быть объявлен в интерфейсе. Другими словами event это ничто другое как синтаксический сахар, за который мы и любим c#.
@victorbelkov5346
@victorbelkov5346 2 года назад
Классно, все элементарно и просто. Спасибо автору, достаточно было задуматься почему столь похожие на первый взгляд фичи называются совершенно по разному и стало понятнее. Цитаты огонь, кусочек мудрости в придачу к хорошим знаниям плюс дополнительный яркий образ для запоминания темы.
@codaza-channel
@codaza-channel 2 года назад
Очень рад, что вы уловили суть событий в C#. Теперь в ваших руках очень мощный инструмент, пользуйтесь им разумно 😉
@trash.6
@trash.6 Год назад
объясните пожалуйста, что значит кода из вне? это метод, который находиться в другом классе или метод, который находиться вообще в другом файле с кодом? (9:40)
@АндрейВолклов
@АндрейВолклов 6 месяцев назад
С сотрудниками вообще не понятно, проще примеры надо.100 раз пересмотрел и не понял.
@ВиталийВитал-ю2у
@ВиталийВитал-ю2у 2 года назад
Добрый день! Наконец-то, среди сотни сайтов нашел канал, где смог понять что такое делегат, ну и события автоматом. Спасибо! Большая просьба: не могли бы Вы вот также профессионально просветить наконец, так что же такое многопоточность и все, что вокруг нее вертится, а также работа с БД. Заранее благодарен!
@ИльяКурашов-г7ж
Одни из самых понятных уроков по событиям в C# Спасибо за урок p.s. Подскажите, будут ли новые выпуски?
@Olegcowboyoleg
@Olegcowboyoleg Год назад
Такие, как вы, автор, нужны людям. И ролики такие нужны. Хорошо, плавно, гладко, без всякого лишнего мычания, в меру динамтчно, в меру нерасторопно, но по делу. Поклон вам. Спасибо.
@ilyavoloshyk1411
@ilyavoloshyk1411 3 года назад
Привет, можешь видое про различие пайпов wep api / MVC сделать? Был бы очень признателен
@TheVelf
@TheVelf 2 года назад
все эти минимал апи и прочее, каша как у новичка во всех этих какой проект создавать и для чего.
@ivanbazhanov
@ivanbazhanov 3 года назад
Спасибо! Ждем про шаблоны проектирования!)
@hulk3147426
@hulk3147426 Год назад
вот почему многие не умеют обьясеять свои записи? почему на 9й строке ты написал Stuck+= ShowPrice? зачем ?что она плюсует?
@lisqanve
@lisqanve Месяц назад
Посмотри урок по делегатам. Там точно так же он это делал и объяснял. Коротко это добавление метода в делегат или событие.
@ОрестГрач
@ОрестГрач 2 года назад
Просто невероятный формат роликов. Спасибо)
@Stair777
@Stair777 2 года назад
сложна, но интересно) вернусь к видео, когда наберусь побольше программисткого скилла
@РоманХонда-щ7ъ
@РоманХонда-щ7ъ 2 года назад
Вообще не понятно. Информация явно не для тех кто хочет понять что такое событие. Для тех кто уже знает это
@codaza-channel
@codaza-channel 2 года назад
Мне очень жаль, что видео не помогло Вам. Безусловно, для его просмотра необходимо обладать некоторыми знаниями о программирования и C# в частности. Ваш текущей уровень знаний мне неизвестен, поэтому сложно предположить, что именно вызывало у Вас проблему в понимании. Попробуйте вернуться к видео позже. Уверен, Вы всё же получите от него пользу в будущем 🙂
@alexanderdresvyansky8614
@alexanderdresvyansky8614 2 года назад
Спасибо. Благодаря такой подачи даже с недосыпом мозг собирается в кучу.
@codaza-channel
@codaza-channel 2 года назад
Супер! Спасибо за комментарий. Всё же, старайтесь высыпаться :)
@enclave_knight
@enclave_knight Год назад
Это лучшее объяснение делегатов и ивентов, которое я только видел! Сразу видно, автор хочет помочь всем непонимающим, спасибо за твой труд! Также хочется выделить подачу контента - все складно, никакой воды и качественные анимации, в общем все на высшем уровне.
@Lisiy_Lis
@Lisiy_Lis 10 месяцев назад
13:00 спасибо за отличный материал и объяснение. Только нужно добавить, что самым главным отличием события от делегата является невозможно переписать список вызываемых методов вне класса. Если делегату можно задать вызываемый метод через = (и затереть таким образом все что там до этого находилось), то с событием такое "непроходже" - только через += (с сохранением списка вызовов и добавлением нового). Можно было отлично развить пример с библиотекой из прошлого урока, там именно что нужен не делегат а событие. Жаль про это не сказал. Жаль что забросил канал - у тебя отлично получалось
@olexkov4643
@olexkov4643 Год назад
О самом главном не сказал... Event имеет урезанный интерфейс. А точнее только += и -= что предотвращает прямое влияние на делегат. На пример в случае публичного делегата ему можно присвоить null в некласса. С Еvent такое не пройдет....
@Michaelovesyou
@Michaelovesyou Год назад
До сих пор не понимаю, почему нельзя просто вызывать метод просто как Метод() или Класс.Метод()? То есть зачем что-то куда-то делегировать (не считая случаев, когда десять методов можно уложить в один красивый делегат)? А, и не понял, может ли класс "понять", что в каком-то другом классе произошло событие?
@v.s.938
@v.s.938 8 месяцев назад
Так и не понял, есть ли хоть какая-то разница между event и delegate
@it-tb8od
@it-tb8od 8 месяцев назад
Твою мать, даже такое объяснение не понял. Как-же туго идет эта тема, просто ужас.
@kalobyte
@kalobyte 2 года назад
нихера не понял нет конкретного примера реализации, откуда берется событие хотя бы с кнопкой или как сделать событие при приходе инфы в сокет или в порт
@bsist2413
@bsist2413 2 года назад
Было бы хорошо добавить, что event реализует синтаксическую обертка методов add remove над делегатами.
@kostenkoff
@kostenkoff Год назад
Мужик, я тебя умоляю, больше кода. Аналогия это не аргумент. Так, спасибо за твой труд.
@antonchesnokov9230
@antonchesnokov9230 Год назад
Помимо всего сказанного чувство юмора у автора просто блестящее)
@HeIvis
@HeIvis 2 года назад
Невероятно информативный видос!!!
@artmasterio1036
@artmasterio1036 2 года назад
Пожалуйста сделайте видео про invoke, invoke member. Почему в текст боксе используют invoke? Канал ваш просто огонь! Буду всем советовать. Спасибо вам!
@isagidaiki
@isagidaiki 3 месяца назад
пожалуйста вернитесь с новыми силами и роликами
@НиколайЛарионов-г5г
Суперское видео, спасибо
@niklp6116
@niklp6116 2 года назад
вроде понял, спасибо. Но нужно время чтоб это отложилось в голове)
@iGynLoD
@iGynLoD 2 года назад
Самое лучшее объяснение, из тех что я видел.
@-unity-
@-unity- 3 года назад
Слишком мало подписчиков. Решил исправить эту ошибку. Пусть ещё одним подписчиком станет больше!
@codaza-channel
@codaza-channel 3 года назад
Мы всегда рады новым подписчикам на канале! Впереди много интересного! 🙂
@ekaterina6453
@ekaterina6453 2 года назад
Я вас обожаю ) жду теперь про интерфейсы )
@NikitaJe_
@NikitaJe_ Год назад
А куда автор делся?
@AizarkLizard
@AizarkLizard 2 месяца назад
Много воды. Даже на х2 скорости утомительно ждать когда наконец перейдут к делу
@misha-f1k
@misha-f1k 2 месяца назад
м ты смотришь ролик на ютубе и жалуешься на воду? иди на хабр гитхаб и тд
@NikitaJe_
@NikitaJe_ Год назад
Автор ты вернешься?
@korobok653
@korobok653 2 года назад
Нихуя не понял, но очень интересно
@valentinkravchenko2217
@valentinkravchenko2217 2 года назад
Привет! Спасибо за видео, очень полезно! Такой вопрос: почему не заостраял внимание на добавление и удаление обработчиков событий? Это важно?
@codaza-channel
@codaza-channel 2 года назад
Привет! Это важно, но не на столько, чтобы сильно заострять на этом внимание 🙂 Обработчик события добавляется через оператор +=, а удаляется через -=. Это достаточно простая операция. Гораздо важнее осознать уместность применения делегата и события.
@essentia9
@essentia9 Месяц назад
С удовольствием бы посмотрел, как вы справились с объяснением SFINAE😅
@Bushido_Cat
@Bushido_Cat Год назад
Все очень интересно, но ничего не понятно
@GGamess
@GGamess Год назад
ienumerable?
@mikkimorfin5406
@mikkimorfin5406 3 года назад
Благодарю)Хорошего всем дня!
@МаксимАдаменко
@МаксимАдаменко 3 года назад
Все верно и по делу
@mastervolodsobeck5176
@mastervolodsobeck5176 2 года назад
Благодарю! Лучшее объяснение, все стало на свои места, и даже получилось проверить!
@codaza-channel
@codaza-channel 2 года назад
Спасибо за комментарий. Рад, что информация оказалась полезной 🙂
@firemanhood1526
@firemanhood1526 3 года назад
Топ делаешь! Подача угар) раскладываешь по полочкам. Ждем еще видео и побольше, лайк и подписка. По асп.нет кору хорошо бы побольше инфы.
@codaza-channel
@codaza-channel 3 года назад
Благодарю за комментарий! Рад, что подача понравилась. Да, конечно, будем еще много говорить на канале про ASP.NET :)
@kirillpetrov1424
@kirillpetrov1424 2 года назад
Отличное видео, большое спасибо 😁
@Дмитрийсекрет-н7о
@Дмитрийсекрет-н7о 3 года назад
Теперь стало понятней )))
@RYMediaProduction
@RYMediaProduction 3 года назад
Спасибо большое за видео!
@saldy723
@saldy723 2 года назад
ля видосики классные
@nikita6812
@nikita6812 3 года назад
Крутая подача материала ;)
@codaza-channel
@codaza-channel 3 года назад
Спасибо за комментарий. Впереди много интересного 😉
@golibxayrullayev1353
@golibxayrullayev1353 2 года назад
Круто спасибо
@ГеоргийЧупин-в1е
@ГеоргийЧупин-в1е 3 года назад
Оо как ждал этого видео)
@lomshakov
@lomshakov 2 года назад
Уникальная подача)
@NK-fy4mw
@NK-fy4mw 2 года назад
Спасибо большое за понятное объяснение, все по полочкам разложили)
@codaza-channel
@codaza-channel 2 года назад
Рад, что видео оказалось полезным 🙂 Благодарю за комментарий 👍
@Atobarob
@Atobarob 2 года назад
Здорово
@aleksey_peresvet
@aleksey_peresvet Год назад
Я начинающий разработчик на C#(в том смысле, что работаю разработчиком), просмотрел это видео. Хм. Вынужден признать одно из двух: либо я недостаточно умен, либо автору видео лучше прекратить говорить о том, что вопрос темы после просмотра видео будет закрыт раз и навсегда)). Как минимум надо оговориться - у большинства будет закрыт. @Автор, дам совет, можете как угодно к нему относится, тем не менее: все люди разные и находятся на разной стадии понимания каких-то вещей. Одни люди какие-то вещи вообще не понимают, другие соответственно другие вещи не понимают. НО. Каждый человек на планете делает какие-то базовые вещи, которые действительно делает любой. Ну например покупает продукты в магазине, ходит на работу, ездит на (каком-то) транспорте, живет в доме(квартире), дружит с друзьями, женат(или замужем) и тд. Сейчас объясню к чему это предисловие, так вот, это, скажем так, общие поля и методы класса человек, приводя "аналогии" к этим полям, методам, свойствам и тд можно объяснить практически все что угодно, имея достаточное воображение. Как можно объяснить что-то такое делегат? Например: я заказываю продукты питания через службу доставки, я передаю в службу список нужных мне продуктов и жду курьера. Всё. Я ДЕЛЕГИРОВАЛ сбор и доставку продуктов каким-то НЕИЗВЕСТНЫМ мне людям. Таким образом служба доставки это ДЕЛЕГАТ, который хранит ссылку на курьера, я передал делегату список продуктов, делегат вызвал курьера и передал ему список продуктов. Теперь для чего нужны делегаты? Можно ответить используя приведенный выше пример: я не знаю какой именно курьер(метод) будет собирать и доставлять продукты, я знаю только название службы доставки(имя делегата), это очень удобно для меня, так как избавляет меня от любых хлопот, я не думаю какой курьер будет вызван, какой у него номер телефона, где он находится в данный момент, в каком магазине он будет собирать для меня продукты и тд, и это удобно для службы доставки, она в любой момент может поменять курьера, если один заболел или уволился или слишком занят на другом заказе и при этом службе доставки не нужно никак уведомлять об этом меня, ведь я понятия не имею какой именно курьер будет осуществлять доставку. Примерно так. И при этом ни одной строчки кода)).
@svyattp
@svyattp 2 года назад
Годно!
@GDrakula
@GDrakula Год назад
Делегат - это тип, который представляет ссылки на методы с определенным списком параметров и типом возвращаемого значения. При создании экземпляра делегата этот экземпляр можно связать с любым методом с совместимой сигнатурой и типом возвращаемого значения.22 сент. 2022 г. А вы говорите что делегат это класс ? Делегаты (Руководство по программированию на C#)
@Георгий-ь6с
@Георгий-ь6с Год назад
Многое прояснилось, хотя не до конца понял, чем конкретно во втором примере Congratulated() отличается от CalculateBonus() из первого, ведь его мы тоже можем теоретически делегировать сторонним классам. Все равно очень полезно, спасибо!
@Olegcowboyoleg
@Olegcowboyoleg Год назад
Да, кстати, а почему делегат объявляется вне класса Програм, а само событие - внутри класса Програм, но вне тела метода Main? Это вообще имеет какое-то решающее значение?
@filiandun
@filiandun Год назад
Хорошо, я в сотый раз понял, как объявлять эти делегаты и события, но я и в теории не могу представить, на кой мне они упёрлись, из-за чего не понимаю вообще как их использовать.
@michael_sss
@michael_sss Год назад
Просто топчик. Я наконец-то ДЕЙСТВИТЕЛЬНО понял что такое события )) автор, продолжай - у тебя талант объяснять.
@КириллЧе-я5ы
@КириллЧе-я5ы 2 года назад
Логично. Хранение ссылок. Только как следить чтоб ссылки не были битыми?.. garbage?..
@Enjoykian
@Enjoykian 8 месяцев назад
Автор, спасибо за труд!!! Качество подачи на самом высшем уровне.
@КириллЧе-я5ы
@КириллЧе-я5ы 2 года назад
А методы calculatebonus хорошо бы по information expert инкапсулировать в employee
@alexandrsavin2266
@alexandrsavin2266 10 месяцев назад
Классный канал и топовый контент. Очень понятно. Приятно слушать. Надеюсь, что канал оживет. Спасибо за всё
@ТимурИксанов-д2к
@ТимурИксанов-д2к 8 месяцев назад
После фразы: "Напоминаю Вы на канале Кадаза и отсюда невозможно уйти не поняв материал" Я не мог не подписаться
@pofoq
@pofoq Год назад
Стало конечно понятнее, но... Наверное, только с практикой будет видна общая картина. Кто и как подписывается на события, например?
@bennails3447
@bennails3447 Год назад
Спасибо за классную рубрику! Побольше бы таких видео про разные аспекты C#. Может быть, даже что-то про автоматизацию тестирования появится (не Unit-тесты, а именно QA Automation) Выйду на работу в следующем месяце, подпишусь на спонсортво канала
@SOBA_MATATA
@SOBA_MATATA 7 месяцев назад
когда тебе пришлось смотреть видео дважды: один раз из-за музыки, другой раз из-за материала
@iGynLoD
@iGynLoD 2 года назад
Утверждение в начале неверное. Правильное: При условии вечности Вселенной, каждое не невозможное событие является неизбежным!
@shadow_wolfplay943
@shadow_wolfplay943 9 месяцев назад
Меня сложно заставить подписаться, но я подписался, даже не успев досмотреть видео до конца. На сравнении с красками пошёл подписываться.
@КириллЧе-я5ы
@КириллЧе-я5ы 2 года назад
А как насчёт использования делегатов в конкурентной среде? Где нибудь в реактивной парадигме? Ведь это тоже подписка на события?..
@mikhailkhatuntcov1483
@mikhailkhatuntcov1483 2 года назад
По поводу вашего интро о трассе 60: т.е. изначально невыполниме событие - выполнимо? бред. Что если всеразрушающая сила столкнётся с не разрушаемым объектом? А так в целом всё чикипуки. Так держать!
@codaza-channel
@codaza-channel 2 года назад
Вот мы и забрались в плоскость философии, а я так этого не хотел)) Не судите строго, через интро я пытаюсь немного снизить напряжение перед новой темой для слушателя.
@victorbelkov5346
@victorbelkov5346 2 года назад
Чувак, ты пытаешься найти смысл в шутливой отсылке к фильму, где упоминается событие. Тут про программирование, не про философию:) Цитаты это просто классная фишка автора
@ekve9
@ekve9 2 года назад
Что если всеразрушающая сила столкнётся с не разрушаемым объектом? Или ничего не произойдёт или будет бесконечное и бессмысленное противостояние. Если произойдёт иное, то либо сила была не такой уж "всеразрушающей", либо объект был не таким уж и "не разрушаемым".
@mikhailkhatuntcov1483
@mikhailkhatuntcov1483 2 года назад
@@ekve9 и всё же что будет?
@МихаилБахмат-о5ь
@МихаилБахмат-о5ь 10 месяцев назад
Офигеть топовый контент, 2 видео уже смотрю мне оч нравится, похоже я с вами на долго))
@MimakaGamleT
@MimakaGamleT Год назад
Про цвета - просто вышак! Иными словами: Ваша аллегория с цветами - выше всяких похвал.
@dad912
@dad912 Год назад
Если любое событие неизбежное - даже невозможное . Тогда неизбежно ли что какое-то событие не произойдет ?
@vladoss4643
@vladoss4643 Год назад
Спасибо. В начале было очень понятно. С середины стало сложнее, но вы сделали все что смогли) Отличное видео)
@minimalstory
@minimalstory 2 года назад
Спасибо, все понятно)
@codaza-channel
@codaza-channel 2 года назад
На здоровье 🙂 Благодарю за комментарий 👍
@AzizjanAyupov_leo
@AzizjanAyupov_leo 2 года назад
Круто. Как всегда докопались до дьявола)
@ellakamenetsky7742
@ellakamenetsky7742 Год назад
Спасибо за крутые уроки!
@ВладиславБезуглый-ь2к
Хочу больше уроков !Спасибо большое !
@tomasgammister5776
@tomasgammister5776 2 года назад
Полез в делегаты, так как не могу вызвать метод с параметрами через Invoke, указав параметры именно в самом Invoke. Намекнули копать в сторону делегатов. Но пока не понял, поможет мне эта тема ?)
@codaza-channel
@codaza-channel 2 года назад
Не знаю точно Вашу ситуацию, но из представленной Вами информации могу предположить, что делагаты не имеют отношения к вопросу. Вероятно Вам следует использовать вызов метода через рефлексию и передать необходимые параметры через массив. Посмотрите информацию по этой ссылке, возможна она окажется полезной: stackoverflow.com/questions/38037614/invoke-method-with-reflection-pass-through-parameters-and-receive-a-return-value
@Вадим-н1н7в
@Вадим-н1н7в Год назад
Круто, спасибо
@elmiravzalov5782
@elmiravzalov5782 2 года назад
Начал смотреть видео про делегаты и в один момент понял, что нужно сначала смотреть видео про события. Но в видео про события говорится, что всё таки нужно досмотреть про делегаты. Такие дела
@codaza-channel
@codaza-channel 2 года назад
Делагаты и события весьма тесно связаны. Сначала предлагается посмотреть видео про делагаты, а далее про события, так как событие - это логическое продолжение делегата.
@Ogur4ikHrustit
@Ogur4ikHrustit 2 года назад
Я правильно понимаю?: Подписавшись на событие ,оно может оповестить и через очень большое время в нужный момент? Делегаты нужны в первую очередь для инкапсуляции? Я просто который урок смотрю/читаю,вроде понимаю как работает,но не понимаю как это применить мне в моем пет проекте ,просто не могу въехать в суть надобности этих двух штук(
@codaza-channel
@codaza-channel 2 года назад
Нет-нет, пока Вы еще путаетесь. Но это очень-очень хорошо, так как путаница скоро закончится) Оповещение через "большое время" это не про события. События - это скорее про мгновенное оповещение и мгновенную реакцию на них. Например, у вас есть текстовое поле (пусть будет вес товара на рынке) и вы хотите выводить пользователю подсказку о том, что больше 40 кг продавать нельзя. Вы делаете событие на тот случай, когда пользователь вводит число, превышающее 40. Кто-то слушает это событие и при его получении показывает красную рамку или красное сообщение и т д. Или у вас какое-то сложное сетевое приложение, и вы видите, что вышел из строя какой-нибудь switch. Вы делаете событие и где-нибудь на форме мониторинга выводится оповещение оператору или высылается sms, например. Делегаты - это про делегирование. То есть нам нужно, чтобы логику выполнил кто-то извне. Например, расчёт процента для налога. У кого-то 13%, у кого-то 18% + дополнительная логика и т д.
@zergzerg4844
@zergzerg4844 2 года назад
Я чето все-равно не понял. Разница в том что делегат может возвращать параметры а событие нет ?. По сути чтобы оба типа жду ссылку на метод извне и будут по своему обрабатывать данные, в зависимости какой метод в них записали. Но делегат я могу создать такого же типа void как событие зачем мне событие тогда нужно?
@codaza-channel
@codaza-channel 2 года назад
В ролике я попытался объяснить концептуальное отличие между делегатами и событиями. Для каждой задачи есть своя абстракция. Если у вас есть модель события, зачем вы хотите использовать делегат в модели с событием? 🙂 Задумайтесь немного над этим вопросом. Вот другой пример: в переменной типа double мы можем хранить целочисленные значения типа integer, может попросить Microsoft убрать этот тип из dotnet? 😉 Вывод, к которому я подталкиваю, заключается в том, что необходимо брать правильную абстракцию подходящую под решение задачи.
@zergzerg4844
@zergzerg4844 2 года назад
@@codaza-channel Спасибо за объяснение, подумаю на этим
@paul.antares
@paul.antares 2 года назад
Привет! Может быть я плохо дважды посмотрел ролик - не сплю целую ночь, ищу ответы. Вопрос в от в чем - зачем нужны события, если можно обычный метод вызвать и в этом методе вызывать другие методы? В чем такая ключевая фишка событий?
@codaza-channel
@codaza-channel 2 года назад
Привет! Конечно, мы можем вызывать обычные методы и даже должны это делать 🙂 Мы ни в коем случае не должны использовать события если сможем обойтись обычными методами. Событийная модель применяется, когда обычных методов нам не хватает. Например, когда вы создаете библиотеку. Вы не можете знать кто будет пользователем вашей библиотеки и из кода вашего класса вам нужно делать оповещения. То есть, вы просто не знаете какие методы нужно вызывать, но знаете, что какие-то точно нужно, потому в работе вашей библиотеки могут быть заинтересованы те, кто ее использует. Поэтому вы делаете что-то вроде слота подключения (событие) через который, другие люди могут передавать вам ссылки на методы, которые вы сможете вызывать. Если говорить супер грубо, но, чтобы вы уловили суть, события - это “дырка” в вашем классе, через которую вы сможете общаться с “другими”, но кто будут эти “другие” на момент создания программы вам неизвестно. Например, ваш класс отсылает SMS-сообщения и кому-то нужно считать все отосланные SMS-ки. Вы делаете эту дырку (событие) и производите оповещение после каждой отосланной SMS-ки. И все (кому это надо) подписываются на ваше событие и реагируют на него как хотят (например, считают количество отправленных SMS).
@paul.antares
@paul.antares 2 года назад
@@codaza-channel спасибо большое!
@Stalker_911
@Stalker_911 2 года назад
Я так понимаю, что нужно стараться писать меньше функций и больше делегатов в коде?
@codaza-channel
@codaza-channel 2 года назад
Нет, такой вывод неправильный. События, делегаты, методы, классы и т. д. - всё это различные инструменты, которые позволяют решать возникающие задачи. Все они должны применяться уместно. Не должно быть такого, что вы стараетесь применять что-то чаще, а что-то реже. Вы всегда должны задавать себе вопросы и давать на них ответы. Например: В действиях моего класса могут быть заинтересованы другие классы? Если да, то беру событие. Для работы моего метода потребуется внешняя логика? Если да, то беру делегат. Мой класс обязан знать логику расчета? Если да, то беру метод.
@Stalker_911
@Stalker_911 2 года назад
@@codaza-channel Спасибо, теперь начинаю понимать. И да, ваши видео, ОЧЕНЬ крутые.
@fa3r714
@fa3r714 2 года назад
Спасибо за видео) За 15 минут видео и немного практики все стало понятно, обьясняешь охуенно) Удачи в продвижении канала😌
@ЕкатеринаБирюкова-н7и
Наконец-то разница улеглась в голове. Спасибо!
Далее
C# Delegates Делегаты
18:14
Просмотров 87 тыс.
C# Strategy Стратегия | Design Patterns
19:06
Ко мне подкатил бармен
00:58
Просмотров 137 тыс.
Почему?
00:22
Просмотров 283 тыс.
C# List
11:35
Просмотров 45 тыс.
C# QuickSort Быстрая сортировка
21:32
⚡ Всё про события в Unity 3D
21:38
Просмотров 106 тыс.
C# programming. Lesson 3. Delegates and Events.
21:13
Просмотров 187 тыс.