Делегаты и события на практике
Vložit
- čas přidán 23. 09. 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 снова каша в голове
Механизм для упрощения написания кода, вроде как выглядит
Я конечно понимаю что я ещё только начинающий, но я врубил видос, а там после фраз приветствия пошёл "белый шум"
не такие сложности надо с толком, с расстановкой рассказывать, а не по быстрому.
Если я посмотрю видео еще 2-3 раза, это поможет)?
Конечно поможет!!! (нам)
P.S. Посмотри видосик, почитай на метаните и снова нагрузи видосик. Потыкай делегаты в студии и станет понятнее.
Потыкал, реально помогло.
@@Mr43046721 Тык такая вещь помогающая, это да!
нет, 23-32 минимум
@@ExtremeCode сук, работает, спасибо
Есть пример кода в конце, есть какое то описание случая использования вначале, но не хватает самого главного - пояснения в каких случаях оправдано использование делегатов (конкретные факторы, на которые следует обратить внимание), на основании такого случая и нужно было приводить пример. Т.е. сделать какую то простую систему (как в примере с кнопками) и показать как это должно работать. Пример же здесь с гопником и бузером ничего толкового не дает, подобных пример на ютубе и так много.
Необходимо просмотреть паттерны GoF объяснить в 10 минутном видео это невозможно!
Лучший! Спасибо, помогаете нам на паре программирования :)
Чуваки, я вас обожаю вы лучшие!
Круто-круто...
Но...
Где тут практика-то?
Я ожидал чего-то крутого, как в "полиморфизм на практике", а получил, по сути, еще горсть теории...
Возникло ощущение, что автор больше хотел показать какой он умный, чем объяснить
Самым простым языком пояснил. Мое почтение
расскажите про лямбда выражения подробнее если можно)
Вчера узнал, кто такой фаггот, сегодня пригодилось, вот это реально полезные знания: понимать отсылки из смешных видосов
лойс неглядя, дождался таки
Видео неплохое, спасибо. Только одна поправочка (даже не поправочка, а так, косметика) - пользуйтесь фишками последних версий языка. Да и создавать каждый раз пустые 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
Прикольная метода обучения, через шутки!
4:06 как получить инфу из "delegates"? Не пойму что список возвращает
а можно где-то найти исходники из видео?)
Единственное что могу сказать по этому уроку:
На 5:31 не коробка автомат, а коробка с двумя сцеплениями, называемая преселективная (не робот)
Красава
Про синтаксический сахар вроде тех же лямбда-замыканий будет выпуск? Довольно интересная тема, мало где освещаемая.
А код можно глянуть, чет у меня не выстроилось ничего. Как сам код выстроили покажите пожалуйста. Например там вызвали метод boozer.LetsGoDrink(). А где его создали? Или метод private void Worker() где он стоит ? В классе Boozer ? Или где? И если он приват то как его можно вызвать в другом классе Gopnik, в методе public void LetsGoShelkat() ?
Мжна помедленее?Я записываю! Реально не успеваешь вкурить че там говорят, показывают код, потом он резко исчезает, появляется другой, а щелкать каждые 5 сек на паузу не ок.
Ставь скорость видео 0.5. И тогда твоим лектором станет человек, как будто страдающий бессонницей и находящийся под супер клеем. Прямо как будто с братишкой за бутылочкой крепкого в 2 часа ночи обсуждаете не политику, а код.
не успел пошутить про 0.5
видео создано для того чтобы лучше понять делегаты, но если ты записиваешь то лудше почитай на metanit или MSDN
в большой семье надо все быстро делать
Супер. Классно. Чем больше смотришь, тем больше понимаешь. А если через час просмотра этого видео чай сходить налить, так вообще 4е измерение постигнуть есть шанс))
А если серьезно, можно как-то видеоряд смещать на пару секунд вперед? Я, как особо одаренный, слушая, не успеваю понимать че на картинке нарисовано, а когда предложение заканчивается, пытаюсь на пробел нажать и сопоставить увиденное с услышанным, но не успеваю, картинка убегает. Так и тыкаю ползунок туда сюда))
У второго оратора, я такого не замечал - убегающих картинок.
Ребята пожалуйста запилите видосик про многопоточность. Как и когда ей пользоватся.
ее пользуются, если тебе необходимо, чтоб параллельно выполнялся, еще какой нибудь код
Если параметры не используются, то логичнее объявить событие как public event Action oilEnded; Вызов события oilEnded?.Invoke(); Если нужны параметры - public event Action oilEnded; Вызов oilEnded?.Invoke(1, "Остался всего литр :))"); Обобщенные делегаты Action, Predicate и Func избавляют от необходимости городить кучу типов делегатов.
Нихуяшеньки, сам по себе EventArgs не может нести полезной инфы, поэтому он будет всегда пустым. А все производные типы должны быть на основе базового класса EventArgs по простой причине - контравариантность.
В видео рассказывалось про KeyEventArgs - благодаря тому что он унаследован от EventArgs, событие, основанное на делегате KeyPressEventHandler, можем подписать на метод соответствующий сигнатуре делегата EventHandler. То есть от конкретного типа к базовому типу.
Это используется в паре фич, в графических приложениях, когда необходимо отследить факт самого нажатия на клавишу, при этом когда не нужно знать на какую именно кнопку было произведено нажатие. Событий много, и у некоторых EventArgs'ы разных типов, а ковариантность мейк зис посибле.
а мне нравится)
Я совсем молодой маслёнок в программировании, поэтому не ругайте сильно если херню написал. Так вот, я не понял а как метод privet void Worker() потом вызвался в методе LetsGoShelkat()? Или подразумевается что у каждого класса есть свой privet void Worker()?
@Эрнест Резерфорд Спасибо за ответ!
классно обяснил, молодец -> Like и подписка!
А про питон чёт будет?
Скомкано. Делегатам и событиям нужно больше внимания
Дома поговорим
ExtremeCode ну лааадно...))
Ничего не понятно но очень интересно. Второго диктора интереснее и информативнее слушать)
Шо лукас ставить, ну ладно поставлю)
Заодно понял, как работает коробка DSG) +за ясность, но! с 6:19 таки надо как-то помедленней и поглубже с куском кода (с примера) не понятно, откуда стало известно, что содержится в делегате, не ясно где подпись на это событие и что выполниться при его возникновении
1:50 какая музыка на фоне?
Музыка в конце?
Лукас поставлен. Сяп за переработку старой версии для чайников (или для кого там было)
Вроде все понятно, но нет))) ладно, почитаю еще, отличное видео, спс
Ееее интересно это вы мой комент в вк увилили?
после такого начала, как-то и не знаю, нужно ли все это)
Йоу, у меня вопрос возник не по теме видео, нужна мудрость более опытных. А что входит в работу разработчика?
вот сижу я 3ий год пишу на пхп+дотнет, немного документации нашего апи для клиентов. И тут мне говорят, что нужно трем серьезным клиентам помочь с внедрением нашего api и мне не понятно как это воспринимать? Старшие посчитали что я плох как разработчик и дали задачу тех поддержки? Или же для разработчиков это нормально?
Мне самому технологии нравятся, приходить домой и делать пет прожекты - в радость, а теперь чет не понятно что происходит
Разработчик и не должен заниматься задачами внедрения, документации по апи есть? есть. реализация есть? есть. этого достаточно. Вот пусть техподдержка и внедряет апи: зарегают их, ключ выдадут и тд.
Нифига не понял, но очень интересно....
🔥🔥🔥
Например у тебя есть герой и у него заканчивается хп, можно подписаться на это событие
go курс по си
Кажется на второй минуте я понял: Переключаешь рычажок вверх, и у тебя функция вычисляет что (1,2) это 1+2, переключаешь рычажок вниз и функция теперь думает что 1*2.
То есть делегат это штука которая позволяет менять операции внутри функции не меняя вводимые в скобках аргументы
что то типа интерфейса
а эвенты и так понятно зачем нужны - чтобы пинать кого то без проверщиков типа if hernya==true
допустим у нас один код выполется 1 раз в секунду а второй 1 раз в 10 секунд, просто вызывая функцию в первом коду мы вызовем еë 10 раз в 10 секунд, а создав эвент сколько бы раз он не повторился, функция выполнится только 1 раз в 10 сек, ровно в тот момент когда будет вызван второй код по порядку второго кода.
То есть подписчик чекает состояние и выполняет функцию на своих условиях, а не по первому пинку из любой точки кода.
(то есть эвенты пипец как полезны в параллельных вычислениях)
или вот еще проще
if выбрано 1
функция а = выдать синий экран с текстом (текст)
else
функция а = выдать окно подтверждения с текстом (текст)
if Нажал кнопку
выполнить функцию а (текст).
Только вместо Oil больше подойдёт Fuel, наверное, но это не точно;)) в любом случае весело вы это всё))
тоже заметил. Странно, но почему-то все хорошие кодеры английский не знают, или знают на плохом уровне. А нам, маслятам только и остается что выебываться своим С2 инглишем, тк прогать мы не можем)
Разница в Action и Delegate тоже расскажите?
Delegate - это делегат. Он может принимать и возвращать любые значения.
Action - это определённый делегат, который только принимает значения, но ничего не возвращает взамен.
3:50 чёт орнул😂
OilEnded?.Invoke(this, EventArgs.Empty);//Вместо if (OilEnded != nu...
Ещё давно EventArgs.Empty придумали для такого случая
Den Gen Исправил =)
3:30 из java: привет, у нас всё так и происходит
Слыш где инфа про Invoke BeginInvoke EndInvoke? А если найду?
НИчего не понял но очень интересно
Ничего не понятно но очень интересно
Занимательно, но Страуструпом попахивает :)
Бояре используют action и func вместо delegate
я вот не пойму, почему лучше использовать делегат, а не функцию?
Надеюсь я смогу в с# и сделаю свой псевдо движок(просто лаунчер для клона армы(микса армы и таркова))
Вместо делегатов использую интерфейсы ( foreach obj in Iobjects)
Extreme Code, запустите курс по программированию на Си
Я так понял пули перед уничтожением можно снабдить событием и избежать связанности кода ?
Это я про игровой движок...
Нихуя не понял, но очень интересно
Возвращаюсь спустя год, с огромным багажом знаний по с# по сравнению с тем, что было раньше
Ничего не понятно, что за EventArgs? Что значит LetsGoDrink(), что за LetsGoShelkat()? Ааа, мой мозг
возникли те же вопросы. +
С примером про семки и бухло в голове будто туман пропал... Говность (готовность) использовать делегаты на 1000
это не просто коробка автомат, а коробка автомат с двумя сцеплениями
Впервые замедлил видео на ютьюбе.
4:17 ахахахахах
не понял, а какого черта нельзя функцию подписать на эвент? синтаксис вроде адекватно будет выглядить типа
событие += функция();
зачем конкретно делегат юзать?
Ты чё, я не планирую умирать в 60 :(
Лукос
Эм... На рисунке коробка не автомат, а робот.
что за слово на 3:20 ???????????
п.с : я понял там на******ет
все равно не понятно зачем оно вообще нужно если просто можно написать один метод но с разными атрибутами.
Делегат - это адвокат
lol, РОФЛ про ульту тайда..commend
Все здорово, но непонятно ровным счетом нихрена.😢 Еще ни одного видео по событиям не нашел понятного.
я все ожидал что то типа: но это все говно и все юзают реактивки
Вместо указателя у плюсов есть замечательные средства - лямбды, функторы, std::function… а ещё реактивные библиотеки…
отличный видос. Но не для начинающего, если ты еще сам не читал что такое делигат и не трога его, то вали отсюда читать книгу.
А вот для повторения или после книги отлично закрепляешь информацию
сажива
выключил видос на 2:18
Я обдристался на 6-й минуте
А зачем тут субтитры на русском?
Чёто в голос с уведомления подписчиков об окончании бухла
Промисы для маленьких и тупых?
интригант мля..))
худшего объяснения я еще не слышал
К сожалению, бывает и хуже. Но данная тема таки да, как будто не раскрыта.
Брат, ты объясняеть слишком быстро, перелистываешь картинки так быстро, что хрен успеешь всё прочитать и составить в голове хоть какую то логику!
он просто если медленней будет, то то, что в начале сказал - забывается
Делегаты понял а события них*ена
Тут типа надо обучаться или своё внимание отвлекать на плоские шутки?
Дизлайк и отписка!!!
Жесть конечно. Видео для таких же, как автор, которые давно на событиях и делегатах собаку съели. Я в C# новичок и особого понимания после просмотра ролика по части делегатов у меня не прибавилось.
По сути ты можешь создать класс(строитель) и сделать в нем метод(построить), но тебе лень делать универсальный метод и просто делаешь делегат метода и используешь в классе как будто он у тебя есть. И в каждом создании класса ты можешь отдельно создать реализацию(построить дом, построить сарай) или просто подписать в уже существующий подходящий метод.
А события они по сути просты. Ты ведь можешь создать кнопку в windows форм и потом запустить и нажать на эту кнопку, но ничего не произойдет, так как на нажатие не было привязано реализация чего либо. Можешь привязать на это событие хоть завершение запущенного проекта и т.д. Просто нужно аккуратно по какому то шаблону внедрить событие в свой класс, если он уж круто упрощает твою жизнь или как то может ускорить твое приложение. Ведь никому не нужны приложения, которые жрут очень много памяти почем зря
нифига не понял
Вахахахах ну и пердолинг у вас в сшарпе. Может еще отжаться 10 раз и бабушку через дорогу перевести нужно, чтобы функцию как аргумент передать? В питоне вот любая функция - объект по умолчанию и ее можно передавать куда хочешь без всяких делегатов
Повторите еще раз, я записываю. Очень быстро, очень скомкано, и без примера. Так не делайте.
За такие методы и делегаты не стать тебе стримером на твиче
А вот за С/С++ в мусорке - дизлайк и отписка!
Шучу конечно)) хорошее видео
5:43 Да вообще не понятно что ещё за механизм подписки. Если кто-то понял, отпишите о чём идёт речь. Потом 6:27, опять какая-то путаница, что за Keys.a? На 8:12 постоянно идёт речь об экземпляре делегата, но я его вообще здесь не вижу. Нет метода с ?Invoke. Дальше на 8:28 методы, которые даже не показаны, приходится по названию догадываться, что происходит. is / as опять же для людей кто только изучает делегаты и события вообще не понятно что это, если с этим не встречались. При чём ни один я не понял что происходит, судя по комментам. В общем, не лучший видос на вашем канале.
Вот лет через 15-20 просмотри свое видео и поплачь. Реального понимания делегатов у тебя нету. Да ты красиво излагаешь то что написано в книжке, хорошо все запомнил, хоть зачет сдавай и без сомнение получиш зачет.
но Что я имею ввиду? ну вот например, для чего нужен молоток?
Молоток - металлический или деревянный брусок, насаженный под прямым углом на рукоятку, данный ударный инструмент служит для забивания чего-н., ударом по чему-н. или Молотком забивают гвозди.Два варианта объяснения верны, только первый книжный, как у тебя, много ненужных книжных терминов, нету реального опыта.
А начинающему как не книжные термины потом курить? Видео под аудиторию?
Когда Вы запилите курс по C#?
Когда Вы запилите курс по C#?
Все скомкано нихера не понятно, сыпят терменами и думают тутор сделали.
С трудом улавливаю о чем говорит автор. Событие можно вызвать только изнутри класса в котором оно объявлено, событие может не использовать делегаты для своей реализации. Еще пара отличий.
Понятно, что нихрена не понятно...