Делегаты и события на практике
ฝัง
- เผยแพร่เมื่อ 23 ก.ย. 2017
- Привет, друзья! В этом видео мы познакомимся с делегатами и событиями в C#, и на практике узнаем как ими пользоваться
Канал Telegram: t.me/extremecode_channel
● VK: bit.ly/vk_extremecodetv
● Telegram Chat: bit.ly/telegram_extremecodetv
● Twitter: bit.ly/twitter_extremecodetv
● GitHub: bit.ly/github_extremecodetv
Посмотрел уже где-то 40 раз. К 30-му вроде половина стала понятна. А к 40 снова каша в голове
Механизм для упрощения написания кода, вроде как выглядит
Я конечно понимаю что я ещё только начинающий, но я врубил видос, а там после фраз приветствия пошёл "белый шум"
не такие сложности надо с толком, с расстановкой рассказывать, а не по быстрому.
Лучший! Спасибо, помогаете нам на паре программирования :)
Чуваки, я вас обожаю вы лучшие!
Есть пример кода в конце, есть какое то описание случая использования вначале, но не хватает самого главного - пояснения в каких случаях оправдано использование делегатов (конкретные факторы, на которые следует обратить внимание), на основании такого случая и нужно было приводить пример. Т.е. сделать какую то простую систему (как в примере с кнопками) и показать как это должно работать. Пример же здесь с гопником и бузером ничего толкового не дает, подобных пример на ютубе и так много.
Необходимо просмотреть паттерны GoF объяснить в 10 минутном видео это невозможно!
Если я посмотрю видео еще 2-3 раза, это поможет)?
Конечно поможет!!! (нам)
P.S. Посмотри видосик, почитай на метаните и снова нагрузи видосик. Потыкай делегаты в студии и станет понятнее.
Потыкал, реально помогло.
@@Mr43046721 Тык такая вещь помогающая, это да!
нет, 23-32 минимум
@@ExtremeCode сук, работает, спасибо
Возникло ощущение, что автор больше хотел показать какой он умный, чем объяснить
Круто-круто...
Но...
Где тут практика-то?
Я ожидал чего-то крутого, как в "полиморфизм на практике", а получил, по сути, еще горсть теории...
Самым простым языком пояснил. Мое почтение
расскажите про лямбда выражения подробнее если можно)
лойс неглядя, дождался таки
Вчера узнал, кто такой фаггот, сегодня пригодилось, вот это реально полезные знания: понимать отсылки из смешных видосов
Видео неплохое, спасибо. Только одна поправочка (даже не поправочка, а так, косметика) - пользуйтесь фишками последних версий языка. Да и создавать каждый раз пустые EventArgs нет необходимости. Вызывайте событие так oidEnded?.Invoke(this, EventArgs.Empty); Но в целом весьма годно.
Что означает "?" ?
@@user-fz9fs9gi5h docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-
@@user-fz9fs9gi5h вперёд к плейлисту С# для маленьких и тупых
Привет, мои маленькие делегята =D
Про синтаксический сахар вроде тех же лямбда-замыканий будет выпуск? Довольно интересная тема, мало где освещаемая.
Прикольная метода обучения, через шутки!
Единственное что могу сказать по этому уроку:
На 5:31 не коробка автомат, а коробка с двумя сцеплениями, называемая преселективная (не робот)
Красава
Скомкано. Делегатам и событиям нужно больше внимания
Дома поговорим
ExtremeCode ну лааадно...))
Если параметры не используются, то логичнее объявить событие как public event Action oilEnded; Вызов события oilEnded?.Invoke(); Если нужны параметры - public event Action oilEnded; Вызов oilEnded?.Invoke(1, "Остался всего литр :))"); Обобщенные делегаты Action, Predicate и Func избавляют от необходимости городить кучу типов делегатов.
Нихуяшеньки, сам по себе EventArgs не может нести полезной инфы, поэтому он будет всегда пустым. А все производные типы должны быть на основе базового класса EventArgs по простой причине - контравариантность.
В видео рассказывалось про KeyEventArgs - благодаря тому что он унаследован от EventArgs, событие, основанное на делегате KeyPressEventHandler, можем подписать на метод соответствующий сигнатуре делегата EventHandler. То есть от конкретного типа к базовому типу.
Это используется в паре фич, в графических приложениях, когда необходимо отследить факт самого нажатия на клавишу, при этом когда не нужно знать на какую именно кнопку было произведено нажатие. Событий много, и у некоторых EventArgs'ы разных типов, а ковариантность мейк зис посибле.
Супер. Классно. Чем больше смотришь, тем больше понимаешь. А если через час просмотра этого видео чай сходить налить, так вообще 4е измерение постигнуть есть шанс))
А если серьезно, можно как-то видеоряд смещать на пару секунд вперед? Я, как особо одаренный, слушая, не успеваю понимать че на картинке нарисовано, а когда предложение заканчивается, пытаюсь на пробел нажать и сопоставить увиденное с услышанным, но не успеваю, картинка убегает. Так и тыкаю ползунок туда сюда))
У второго оратора, я такого не замечал - убегающих картинок.
Ничего не понятно но очень интересно. Второго диктора интереснее и информативнее слушать)
Ребята пожалуйста запилите видосик про многопоточность. Как и когда ей пользоватся.
ее пользуются, если тебе необходимо, чтоб параллельно выполнялся, еще какой нибудь код
Шо лукас ставить, ну ладно поставлю)
а можно где-то найти исходники из видео?)
а мне нравится)
🔥🔥🔥
классно обяснил, молодец -> Like и подписка!
Заодно понял, как работает коробка DSG) +за ясность, но! с 6:19 таки надо как-то помедленней и поглубже с куском кода (с примера) не понятно, откуда стало известно, что содержится в делегате, не ясно где подпись на это событие и что выполниться при его возникновении
4:06 как получить инфу из "delegates"? Не пойму что список возвращает
Мжна помедленее?Я записываю! Реально не успеваешь вкурить че там говорят, показывают код, потом он резко исчезает, появляется другой, а щелкать каждые 5 сек на паузу не ок.
Ставь скорость видео 0.5. И тогда твоим лектором станет человек, как будто страдающий бессонницей и находящийся под супер клеем. Прямо как будто с братишкой за бутылочкой крепкого в 2 часа ночи обсуждаете не политику, а код.
не успел пошутить про 0.5
видео создано для того чтобы лучше понять делегаты, но если ты записиваешь то лудше почитай на metanit или MSDN
в большой семье надо все быстро делать
Лукас поставлен. Сяп за переработку старой версии для чайников (или для кого там было)
Вроде все понятно, но нет))) ладно, почитаю еще, отличное видео, спс
А код можно глянуть, чет у меня не выстроилось ничего. Как сам код выстроили покажите пожалуйста. Например там вызвали метод boozer.LetsGoDrink(). А где его создали? Или метод private void Worker() где он стоит ? В классе Boozer ? Или где? И если он приват то как его можно вызвать в другом классе Gopnik, в методе public void LetsGoShelkat() ?
Разница в Action и Delegate тоже расскажите?
Delegate - это делегат. Он может принимать и возвращать любые значения.
Action - это определённый делегат, который только принимает значения, но ничего не возвращает взамен.
Я совсем молодой маслёнок в программировании, поэтому не ругайте сильно если херню написал. Так вот, я не понял а как метод privet void Worker() потом вызвался в методе LetsGoShelkat()? Или подразумевается что у каждого класса есть свой privet void Worker()?
@Эрнест Резерфорд Спасибо за ответ!
после такого начала, как-то и не знаю, нужно ли все это)
А про питон чёт будет?
Нифига не понял, но очень интересно....
Например у тебя есть герой и у него заканчивается хп, можно подписаться на это событие
Ееее интересно это вы мой комент в вк увилили?
Только вместо Oil больше подойдёт Fuel, наверное, но это не точно;)) в любом случае весело вы это всё))
тоже заметил. Странно, но почему-то все хорошие кодеры английский не знают, или знают на плохом уровне. А нам, маслятам только и остается что выебываться своим С2 инглишем, тк прогать мы не можем)
go курс по си
3:50 чёт орнул😂
3:30 из java: привет, у нас всё так и происходит
Йоу, у меня вопрос возник не по теме видео, нужна мудрость более опытных. А что входит в работу разработчика?
вот сижу я 3ий год пишу на пхп+дотнет, немного документации нашего апи для клиентов. И тут мне говорят, что нужно трем серьезным клиентам помочь с внедрением нашего api и мне не понятно как это воспринимать? Старшие посчитали что я плох как разработчик и дали задачу тех поддержки? Или же для разработчиков это нормально?
Мне самому технологии нравятся, приходить домой и делать пет прожекты - в радость, а теперь чет не понятно что происходит
Разработчик и не должен заниматься задачами внедрения, документации по апи есть? есть. реализация есть? есть. этого достаточно. Вот пусть техподдержка и внедряет апи: зарегают их, ключ выдадут и тд.
Музыка в конце?
1:50 какая музыка на фоне?
OilEnded?.Invoke(this, EventArgs.Empty);//Вместо if (OilEnded != nu...
Ещё давно EventArgs.Empty придумали для такого случая
Den Gen Исправил =)
Кажется на второй минуте я понял: Переключаешь рычажок вверх, и у тебя функция вычисляет что (1,2) это 1+2, переключаешь рычажок вниз и функция теперь думает что 1*2.
То есть делегат это штука которая позволяет менять операции внутри функции не меняя вводимые в скобках аргументы
что то типа интерфейса
а эвенты и так понятно зачем нужны - чтобы пинать кого то без проверщиков типа if hernya==true
допустим у нас один код выполется 1 раз в секунду а второй 1 раз в 10 секунд, просто вызывая функцию в первом коду мы вызовем еë 10 раз в 10 секунд, а создав эвент сколько бы раз он не повторился, функция выполнится только 1 раз в 10 сек, ровно в тот момент когда будет вызван второй код по порядку второго кода.
То есть подписчик чекает состояние и выполняет функцию на своих условиях, а не по первому пинку из любой точки кода.
(то есть эвенты пипец как полезны в параллельных вычислениях)
или вот еще проще
if выбрано 1
функция а = выдать синий экран с текстом (текст)
else
функция а = выдать окно подтверждения с текстом (текст)
if Нажал кнопку
выполнить функцию а (текст).
Бояре используют action и func вместо delegate
я вот не пойму, почему лучше использовать делегат, а не функцию?
Ничего не понятно но очень интересно
НИчего не понял но очень интересно
Занимательно, но Страуструпом попахивает :)
Вместо делегатов использую интерфейсы ( foreach obj in Iobjects)
Слыш где инфа про Invoke BeginInvoke EndInvoke? А если найду?
Нихуя не понял, но очень интересно
Возвращаюсь спустя год, с огромным багажом знаний по с# по сравнению с тем, что было раньше
Extreme Code, запустите курс по программированию на Си
Я так понял пули перед уничтожением можно снабдить событием и избежать связанности кода ?
Это я про игровой движок...
С примером про семки и бухло в голове будто туман пропал... Говность (готовность) использовать делегаты на 1000
это не просто коробка автомат, а коробка автомат с двумя сцеплениями
Впервые замедлил видео на ютьюбе.
4:17 ахахахахах
lol, РОФЛ про ульту тайда..commend
Ничего не понятно, что за EventArgs? Что значит LetsGoDrink(), что за LetsGoShelkat()? Ааа, мой мозг
возникли те же вопросы. +
Лукос
не понял, а какого черта нельзя функцию подписать на эвент? синтаксис вроде адекватно будет выглядить типа
событие += функция();
зачем конкретно делегат юзать?
Делегат - это адвокат
Эм... На рисунке коробка не автомат, а робот.
сажива
отличный видос. Но не для начинающего, если ты еще сам не читал что такое делигат и не трога его, то вали отсюда читать книгу.
А вот для повторения или после книги отлично закрепляешь информацию
Вместо указателя у плюсов есть замечательные средства - лямбды, функторы, std::function… а ещё реактивные библиотеки…
я все ожидал что то типа: но это все говно и все юзают реактивки
все равно не понятно зачем оно вообще нужно если просто можно написать один метод но с разными атрибутами.
Ты чё, я не планирую умирать в 60 :(
худшего объяснения я еще не слышал
К сожалению, бывает и хуже. Но данная тема таки да, как будто не раскрыта.
Все здорово, но непонятно ровным счетом нихрена.😢 Еще ни одного видео по событиям не нашел понятного.
Дизлайк и отписка!!!
выключил видос на 2:18
что за слово на 3:20 ???????????
п.с : я понял там на******ет
Брат, ты объясняеть слишком быстро, перелистываешь картинки так быстро, что хрен успеешь всё прочитать и составить в голове хоть какую то логику!
он просто если медленней будет, то то, что в начале сказал - забывается
Жесть конечно. Видео для таких же, как автор, которые давно на событиях и делегатах собаку съели. Я в C# новичок и особого понимания после просмотра ролика по части делегатов у меня не прибавилось.
По сути ты можешь создать класс(строитель) и сделать в нем метод(построить), но тебе лень делать универсальный метод и просто делаешь делегат метода и используешь в классе как будто он у тебя есть. И в каждом создании класса ты можешь отдельно создать реализацию(построить дом, построить сарай) или просто подписать в уже существующий подходящий метод.
А события они по сути просты. Ты ведь можешь создать кнопку в windows форм и потом запустить и нажать на эту кнопку, но ничего не произойдет, так как на нажатие не было привязано реализация чего либо. Можешь привязать на это событие хоть завершение запущенного проекта и т.д. Просто нужно аккуратно по какому то шаблону внедрить событие в свой класс, если он уж круто упрощает твою жизнь или как то может ускорить твое приложение. Ведь никому не нужны приложения, которые жрут очень много памяти почем зря
Я обдристался на 6-й минуте
Делегаты понял а события них*ена
интригант мля..))
Чёто в голос с уведомления подписчиков об окончании бухла
Тут типа надо обучаться или своё внимание отвлекать на плоские шутки?
Повторите еще раз, я записываю. Очень быстро, очень скомкано, и без примера. Так не делайте.
А зачем тут субтитры на русском?
А вот за С/С++ в мусорке - дизлайк и отписка!
Шучу конечно)) хорошее видео
нифига не понял
Промисы для маленьких и тупых?
Вахахахах ну и пердолинг у вас в сшарпе. Может еще отжаться 10 раз и бабушку через дорогу перевести нужно, чтобы функцию как аргумент передать? В питоне вот любая функция - объект по умолчанию и ее можно передавать куда хочешь без всяких делегатов
5:43 Да вообще не понятно что ещё за механизм подписки. Если кто-то понял, отпишите о чём идёт речь. Потом 6:27, опять какая-то путаница, что за Keys.a? На 8:12 постоянно идёт речь об экземпляре делегата, но я его вообще здесь не вижу. Нет метода с ?Invoke. Дальше на 8:28 методы, которые даже не показаны, приходится по названию догадываться, что происходит. is / as опять же для людей кто только изучает делегаты и события вообще не понятно что это, если с этим не встречались. При чём ни один я не понял что происходит, судя по комментам. В общем, не лучший видос на вашем канале.
Все скомкано нихера не понятно, сыпят терменами и думают тутор сделали.
За такие методы и делегаты не стать тебе стримером на твиче
Вот лет через 15-20 просмотри свое видео и поплачь. Реального понимания делегатов у тебя нету. Да ты красиво излагаешь то что написано в книжке, хорошо все запомнил, хоть зачет сдавай и без сомнение получиш зачет.
но Что я имею ввиду? ну вот например, для чего нужен молоток?
Молоток - металлический или деревянный брусок, насаженный под прямым углом на рукоятку, данный ударный инструмент служит для забивания чего-н., ударом по чему-н. или Молотком забивают гвозди.Два варианта объяснения верны, только первый книжный, как у тебя, много ненужных книжных терминов, нету реального опыта.
А начинающему как не книжные термины потом курить? Видео под аудиторию?
Когда Вы запилите курс по C#?
Когда Вы запилите курс по C#?
С трудом улавливаю о чем говорит автор. Событие можно вызвать только изнутри класса в котором оно объявлено, событие может не использовать делегаты для своей реализации. Еще пара отличий.
Мальчик:
public event EventHandler someEvent;
Мужчина:
public event Action someEvent = delegate{ };
Было-бы чуть по-медленнее и без музычки, было-бы идеально, а так - хреново.