C# programming. Lesson 3. Delegates and Events.

Sdílet
Vložit
  • čas přidán 8. 09. 2013
  • Main principles of delegates and delegate-based events in C# are described in this lesson.
    Support channel development! PayPal glagolev@astralnalog.ru

Komentáře • 221

  • @BesitzeRuf
    @BesitzeRuf Před 9 lety +120

    3 урок и все, мой мозг поплавился) Не в укор автору, сам урок нравится и все достаточно разжеванно, нужно чтобы в голове еще уложилось)

    • @boribooger
      @boribooger Před 6 lety +19

      до 15 минуты все вроде как понятно.. а потом дичь пошла... хер пойми откуда новый класс взялася там еще и еще... кароче очень мудрено

    • @yugo9805
      @yugo9805 Před 6 lety +3

      Потапов Борис Да, я еще обощенные типы прохожу, а тут делегаты и события. До 15 минуты норм, а потом каша

    • @kurbackiandrei
      @kurbackiandrei Před 5 lety +2

      Про хер пойми откуда взявшийся класс это подмечено верно, долго не мог понять почему MovingEventArgs у него не подчёркивался а у меня да, полчаса убил на то чтобы найти директиву using, в итоге решил смотреть дальше и понял почему не работало. А так вроде понятно, но нихера не понял

    • @artemtischenko787
      @artemtischenko787 Před 5 lety +5

      Я С ЭТИМИ СОБЫТИЯМИ МОЗГ ЛОМАЮ ТРЕТИЙ ДЕНЬ.... ИЛИ Я ТУПОЙ ИЛИ ЧТО-ТО УПУСКАЮ

    • @user-yk8mm1re2l
      @user-yk8mm1re2l Před 3 lety

      Уже три года шКодю и только сейчас дошел до событий. Это наверное пятый урок в интернете на эту тему, и мне он показался самым разжеванным. Буду тыкать, штука явно полезная! Спасибо!

  • @andreykurganov7475
    @andreykurganov7475 Před 9 lety +26

    Этот урок нельзя просто посмотреть. А у новичков (я) он попросту не поместится в голове, не хватит объема внимания. В конце урока, я забыл о том, что было в начале. Рекомендую нажать на паузу и кодить параллельно с автором, но свои собственные классы. Более менее въехать, получилось только после того, как сам столкнулся с необходимостью использования событий в своих классах.
    Автору спасибо!

    • @yugo9805
      @yugo9805 Před 6 lety

      Andrey Kurganov Я новичок и мне хватает внимания, я думаю проблема в том, что он постоянно переключаеться между кусками кода и с первого раза почти никогда впринципе ничего не понятно в програмировании

  • @KvantVS
    @KvantVS Před 8 lety +76

    Понимаю, что прошло 2.5 года, но вдруг полезно будет.
    Лучше бы писать новый код (новое объяснение, например Move заменяете на Moving) ниже, или в новом классе, или закомментировав предыдущий код. Вкупе с Вашей методикой записи видео, как прыгание по различным файлам за рамками записываемой области экрана, и чистый белый фон везде - это всё получается довольно сумбурно. Тут Вы меняете название метода, куда-то прыгнули, там вы меняете объявление метода, обратно прыгнули, поменяли вызов делегата в другом методе, и т.д. и т.п.
    И считаю, что запись всего окна Visual Studio была бы предпочтительней. Хотя бы для того, чтобы ориентироваться, на каком файле Вы в данный момент. А ведь помимо этих файлов, Вы еще что-то открываете - и там тоже белый фон, и слайды, и всё это сводится в голове в кучу.
    Спасибо за внимание:) И большое спасибо за уроки:)

  • @vladyslavandriienko3969
    @vladyslavandriienko3969 Před 7 lety +74

    Было бы проще понять витки кода если бы ты в одном файле всё делал, а не переключался по кускам кода. А так урок супер, очень иформативно.

    • @geek__3743
      @geek__3743 Před 7 lety +6

      Согласен, урок огонь, но приходится постоянно отматывать, чтобы посмотреть реализацию того или иного метода

    • @-unity-
      @-unity- Před 4 lety +1

      А какая разница? Ну пришлось бы тогда мотать вверх-вниз, и ты бы всё равно ничего не увидел. Тут надо одновременно держать все эти файлы перед глазами, чтобы понять для первого раза. Например, попробовать самому, открыть несколько окошек, разместить их рядом...

  • @yuriygulyak6669
    @yuriygulyak6669 Před 9 lety +1

    Очень содержательно и доходчиво - спасибо! На фоне прочего шлака ваши видео просто клад.

  • @user-dd5sl4wr6i
    @user-dd5sl4wr6i Před 9 lety +3

    Хардкорные примеры! Далой простые примеры! Это лучшее средство заставить свой мозг работать. Хороший урок.

  • @ElijahMplace
    @ElijahMplace Před 10 lety +9

    Спасибо автору за видео! Наконец разобрался) с открытой вижуал студией нужно было урок разбирать..
    От себя добавлю, что делегаты одно из основополагающих понятий в C#. На основе делегатов строятся события и обработчики событий без которых сейчас никуда, а так же лямбда-выражения которые активно используются в C#. Поэтому делегатам нужно уделить достаточное внимание, иначе дальнейшее изучение C# зайдет в тупик.
    Так же о делегатах хорошо написано у Шилдта в "Полный справочник по C#".

  • @CatWorldson
    @CatWorldson Před 10 lety +4

    Посмотрел множество каналов, но Вы рассказываете наиболее понятно. Спасибо)

  • @ams9989
    @ams9989 Před 10 lety +7

    Самый лучший видео урок по C# из всех что я видел.COOL )

  • @user-tx2yt8ml9v
    @user-tx2yt8ml9v Před 9 lety +3

    автор молодец! Уроки доходчивые и слушать очень приятно! Так держать!

  • @nursultanalbatyrov1725
    @nursultanalbatyrov1725 Před 10 lety +4

    Спасибо большое! Отличный видеоурок, давно не мог понять эту тему.

  • @RasFantasy
    @RasFantasy Před 9 lety +6

    спустя 3 месяца, ещё раз посмотрел урок и вкурил о_О. Спасибо ^_^

  • @user-je9re4ff2q
    @user-je9re4ff2q Před 3 lety +1

    Начал доучивать пробелы. Офигенно свел делегаты к событиям. Я разобрался с делегатами. Пасиб.

  • @fred20659
    @fred20659 Před 3 lety

    Лучшие видео уроки, которые я встречал!! Спасибо!

  • @user-bd9db3vq8h
    @user-bd9db3vq8h Před 6 lety

    На мой взгляд это самые доходчивые уроки по C#. Автору респект и лайк!

  • @NatuNuarat
    @NatuNuarat Před 8 lety

    Спасибо, автор! Пересматривала раза четыре, но таки разобралась))

  • @svetlanachernova9740
    @svetlanachernova9740 Před 2 lety

    Концентрация годноты!!! Спасибо! Агонь-пожар!

  • @SkrillexStyle
    @SkrillexStyle Před 8 lety

    Спасибо за подробное объяснение механизма работы событий!

  • @elitensey727
    @elitensey727 Před 9 lety +2

    Посмотрел 3 раза, запутался окончательно... Сел в текстовике напечатал весь этот код, закомментировал каждую строку и всё встало на свои места. Спасибо, урок супер! Очень интересна подробное описание реализации делегатов если понадобится достать данные с веб-сервера, ну или как минимум данные которые физически находятся дальше 1 метра от Вашего компьютера)

  • @Devilrain94
    @Devilrain94 Před 4 lety

    Спасибо, благодаря вам, тема становится понятнее!

  • @postelb8046
    @postelb8046 Před 6 lety +4

    простым языком, делегаты - вызов функции в функции

    • @phat80
      @phat80 Před 3 lety

      не, делегат - это не вызов функции, это ссылка на функцию или несколько функций сразу.

  • @Pirojochek93
    @Pirojochek93 Před 9 lety +46

    Я ничего не понял =(
    Запутался на половине урока

    • @sergs2919
      @sergs2919 Před 3 lety

      всегда можно запустить ещё раз))

  • @user-em9rf1yr3i
    @user-em9rf1yr3i Před 3 lety +2

    До конца не понял, но сама методика обучения очень понравилась, 5+! Спасибо большое!

  • @sergbo5509
    @sergbo5509 Před 9 lety

    Очень толковые уроки! Мысли у автора не путаются с дикцией тоже все ок. Короче, не всем так дано! Менять ничего не нужно!!! С шарпом знаком давно, но для освежения информации в своей личной БД очень пригодилось)))

  • @gueterzug68
    @gueterzug68 Před 9 lety +6

    я прихожу к выводу, что для изучения делегатов и событий необходимо держать наготове таблетки от головной боли... :-)))))))))) мда.., тема сама по себе не из лёгких... Но видео толковое, спасибо!

  • @user-tp8bn6cd7o
    @user-tp8bn6cd7o Před 4 lety

    самый лучший материал по этой теме . Большое спасибо

  • @user-dm3fh6rh6m
    @user-dm3fh6rh6m Před 10 lety

    Согласен с пред идущими комментариями, изложение на высоте. Всё понятно без вопросов (только начал изучать шарп). Делегаты - это похоже на обычные коллбэки из С/С++.

  • @Jekklo
    @Jekklo Před 6 lety

    Автору огромное спасибо!!!!!

  • @user-pq1gn7qz3f
    @user-pq1gn7qz3f Před 2 lety

    наконец-то я понял зачем нужны делегаты, спасибо автору. грубо говоря в методе мув мы хотим выводить данные в метод, для этого используем делегат метода

  • @almax7400
    @almax7400 Před 8 lety

    Спасибо большое. Очень хорошо описано!

  • @ch3repashka
    @ch3repashka Před 6 lety

    все ясно и доступно объяснил, респект!

  • @Andrii_V
    @Andrii_V Před 5 lety

    Ох..енные ролики, благодарю от души.

  • @spacerecluse
    @spacerecluse Před 10 lety +1

    Все супер. Не знаю возможно ли объяснить лучше, но я так и не въехал. Пиняю на себя. + Лайк и Подписка.

    • @sergs2919
      @sergs2919 Před 3 lety

      чтобы до конца вкурить надо использзовать

  • @Dan50k
    @Dan50k Před 9 lety +4

    В примере со шагающим студентом (до обобщенных делегатов), строка ShowMessage method = Show; не нужна. Можно сделать просто Student.Move(10, Show); вместо Student.Move(10, method);

  • @na-ms1xf
    @na-ms1xf Před 4 lety

    Очень доходчиво. Спасибо.

  • @elitecoffee9645
    @elitecoffee9645 Před 9 lety +5

    Если ваши друзья поссорились и не хотят друг друга ни слышать ни видеть. И один просит вас передать другому что он дурак, а другой что тот сам дурак, то вы делегат! =)

  • @jokerodmon2338
    @jokerodmon2338 Před 7 lety +8

    С четвертого раза разобрался в делегатах, но сил и желания на события уже не хватило, ушел за ними в вики.
    Если вы еще поддерживаете этот проект, перепишете пожалуйста этот урок, пусть будет раза в 2 длиннее, но понятнее, иначе он бесполезен.
    зы. попробуйте как нибудь уместить весь текст в одном экране, оперативной памяти не хватает что бы запомнить все методы и приходится бегать по видео туда сюда, что запутывает еще больше.
    а так, спасибо за уроки.

  • @user-hj5pk5ui9c
    @user-hj5pk5ui9c Před 5 lety

    Круто, спасибо за урок)

  • @cityedit
    @cityedit Před 6 lety +1

    Это было божественно

  • @SweettyDavid
    @SweettyDavid Před 6 lety

    нереально круто обяснив......супер!!!!

  • @serdotsenko
    @serdotsenko Před 10 lety

    спасибо, очень доступно для понимания!

  • @larissap1529
    @larissap1529 Před 7 lety

    хороший урок. очень понятно про делегаты рассказано. спасибо

  • @igorshlyakov9321
    @igorshlyakov9321 Před rokem

    Отличный урок, спасибо! Наконец то понял, что такое делегаты! Урааа

  • @manshapewolf
    @manshapewolf Před 8 lety

    Спасибо за хорошо изложенную тему

  • @arturambartsumyan9080
    @arturambartsumyan9080 Před 10 lety +3

    очень хороший урок. речь понятная, с правильной интонацией.
    одно пожелание - после очередного действия завершающегося компиляцией приложения, делать хорошую паузу, для того чтобы информация успевала усваиваться.
    т.е. лучше секунд 5-7 посмотреть на всплывающие сообщения, вместо 1-2..

    • @andrgun
      @andrgun Před 10 lety

      Ну мне кажется, так как мы смотрим видео, а не находимся на лекции, не сложно(а как по мне нужно) временами самому ставить видео на паузу и обрабатывать информацию.
      Правда я так и не понял как исправить ошибку
      Thread.Sleep(1000);
      Error 1 The name 'Thread' does not exist in the current context

    • @CatWorldson
      @CatWorldson Před 10 lety +1

      AndDark777 using System.Threading; хотя думаю за 6 месяцев вы нашли проблему)

    • @andrgun
      @andrgun Před 10 lety

      Cat Worldson Спасибо)) Действительно нашел

  • @yakovga
    @yakovga Před 4 lety

    Спасибо за уроки. Чем мог поддержал

  • @uladzimirf7577
    @uladzimirf7577 Před 9 lety

    Понравилось, все просто и понятно

  • @mikhailkh8560
    @mikhailkh8560 Před 8 lety

    Отличный урок!

  • @milos_slav_sky
    @milos_slav_sky Před 5 lety

    Да, про события малех мудрено вышло, но фцелом полезно. Лейпциг за труды

  • @Ghostylish
    @Ghostylish Před 8 lety +1

    Всем кто не вникает с первого раза советую почитать литературу, того же Троелсена.
    А автор молодец, очень толково объясняет. Успехов тебе чувак!!!

  • @user-tn3bw1wg8w
    @user-tn3bw1wg8w Před 4 lety

    Спасибо) очень помогло 👍

  • @scrabbi_cocco
    @scrabbi_cocco Před 4 lety

    Очень хорошо все объяснено. С одной стороны, если более подробно, хронометраж будет минут 30-40 минимум. С другой стороны, краткость не равно минимализм: 1) больше внимания листингам: когда возник MovingEventHandler в первый раз, без объяснений, было неприятно, потратил время на поиск - а может класс стандартный? 2) переход на сами события - резкий и так и нет ответа, а зачем, если до этого комментировали подписку и все работало. Поменять бы местами вариант упрощенного синтаксиса и полный вариант создания события. Как итог: везде добавить немного комментариев, куда идем, зачем идем, что происходит, какой код должен быть у нас написан в компиляторе перед глазами. Спасибо вам!

  • @yaroslavdobroskok529
    @yaroslavdobroskok529 Před 10 lety +1

    Тема и правда сложная, но после этого ролика все сразу стало понятно)
    Большое спасибо!

  • @genadypisarev884
    @genadypisarev884 Před 9 lety

    Классно ! здорово ! все расставлено по полочкам . автор просто супер спасибо.
    вот только беда , я этот урок не совсем понял . самое главное я не понял как и где это применять . наверное еще не дорос до понимания этого урока .когда мне пригодиться и начну понимать когда мне это понадобиться тогда и разберусь и пойму этот урок . а пока следуем далее .

  • @EvgenOrlovsky
    @EvgenOrlovsky Před 8 lety

    очень доступно, тем кто кричит о непонятности - почитайте Троелсена, там ад полный... А вот у Шилдта все очень доступно рассказывается (хотя Троелсен до делегатов и событий описывал исключительно - видимо забухал)

  • @user-xe3dj6bh6v
    @user-xe3dj6bh6v Před 9 lety +1

    Единственное, что можно было ещё включить в видео - это осветить тему .Net совместимых событий (было в видео, но не подробно), зачем нужно поле EventArgs.Empty, провести некое разделение событий на собственные пользовательские и "встроенные" в классы "контролов" события (типа Button.Click и т.д.), включаемые в код при добавлении контролов.

  • @user-nf1xl7in5w
    @user-nf1xl7in5w Před 5 lety

    Спасибо, всё круто. Только пишите декларацию и имплементацию на одном слайде, чтобы не ставить на паузу и постоянно перематывать назад вперёд.

  • @rusl31
    @rusl31 Před 9 lety +3

    Автор, спасибо за такие качественные уроки! У меня есть пара вопросов к вам:
    1. Вы говорите, что класс, который используется в EventHandler должен быть унаследован от класса EventArgs. Но почему я могу использовать любой тип: string, int,..., собственный класс, не унаследованный от EventArgs, и при этом программа компилируется и работает нормально?
    2. Сигнатура метода - это тип и порядок его выходных и входных параметров или только входных? В книге Шилдта говорится, что сигнатура - это имя метода и список его входных параметров (стр. 241).

    • @MrPrimaPro
      @MrPrimaPro Před 9 lety

      И входных и выходных: void(int, char) и int(int, char) - обладают разной сигнатурой.

  • @a_nonen7787
    @a_nonen7787 Před 6 lety

    Почему при Action , это влияет на читаемость кода, если при входном параметре в методе Move видно, что Action имеет только один входной строковый параметр в угловых скобках.

  • @user-io1nt2ut6j
    @user-io1nt2ut6j Před 7 lety

    До этого думал что все идет хорошо, но после видео чет понял что я тупой(( Автору спасибо, очень интерестно и информативно.

  • @powercat8528
    @powercat8528 Před 6 lety

    Если в метод Move нужно в самом классе Student передать число, то как тут быть, если он принимает не только число, а еще и второй аргумент?
    И где объявлять делегата?

  • @alexkot9849
    @alexkot9849 Před rokem

    Спасибо!

  • @sergs2919
    @sergs2919 Před 3 lety

    Всё понятно спасибо

  • @anaredbeard6052
    @anaredbeard6052 Před 5 lety

    Про делегаты - отлично. А вот про события не получилось понять даже после нескольких просмотров, перемоток туда-сюда... после статьи с хабра полегчало )

  • @ablgmv
    @ablgmv Před 9 lety

    спасибо!

  • @dinvinchester3353
    @dinvinchester3353 Před 6 lety

    крутой урок все понятно

  • @dashkagamerpro
    @dashkagamerpro Před 7 lety

    супер!

  • @vladyan01
    @vladyan01 Před rokem

    Ого, третий урок и уже сразу делегаты

  • @solnebo9003
    @solnebo9003 Před 3 lety +2

    Для новичка непонятно как применять события и зачем это нужно. Как совет - лучше такие сложные темы начинать с конца - поставить понятную всем простую задачу и объяснить что без событий и делегатов она не решается. Вот, например, в статье на хабре все понятно объясняется (см ссылку ниже в комментах)

    • @НищаяБлоха
      @НищаяБлоха Před 2 lety

      Любую задачу можно решить даже используя только if/else

  • @dinvinchester3353
    @dinvinchester3353 Před 6 lety

    давно о таком мечтал

  • @user-sq8qe4uy2p
    @user-sq8qe4uy2p Před 8 lety

    спасибо

  • @viksench6447
    @viksench6447 Před 9 lety

    Я так понял что делегация, та, что в самом начале, где ShowMessage - это делегация метода? то-есть это нужно для того, что бы в классе, в который я его делегирую, инициализировать метод, в который я буду что то передавать, верно?

  • @peterlisp3399
    @peterlisp3399 Před rokem

    Спасибо

  • @user-zw5ub5kg7z
    @user-zw5ub5kg7z Před 9 lety

    А есть ли у вас уроки в текстовом варианте?

  • @user-uf7en8om5f
    @user-uf7en8om5f Před 9 lety

    Автор, какие пространства имён здесь подключены?

  • @greggvindzhylia3150
    @greggvindzhylia3150 Před 10 lety

    Не получается присвоить переменной типа делегат ссылку на метод.
    Сигнатура метода some_method: void(My_class a, My_class b);
    Присваиваю так: Delegate_type my_delegate = obj_1.some_method(obj_1, obj_2);
    Компелятор говорит, что неявное преобразование типа void к Delegate_type невозможно. Как быть?

    • @Defazze
      @Defazze  Před 10 lety +2

      Вот так: Delegate_type my_delegate = obj_1.some_method

    • @greggvindzhylia3150
      @greggvindzhylia3150 Před 10 lety

      Defazze Спасибо за оперативный ответ и отличную лекцию! ах невнимательность(
      Подписка += 1;
      Лайк += 1;

  • @ghostpup4323
    @ghostpup4323 Před 6 lety

    Изучаю С++ и С# в ВУЗе... Жаль что раньше на твой канал не набрёл...

  • @lonernagibator5543
    @lonernagibator5543 Před 7 lety

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

  • @user-jl6fd6ik6v
    @user-jl6fd6ik6v Před 24 dny

    7:19 вот тут Магия. Метод я так понимаю из делегата образовывается?
    12:50 вот здесь я начал злиться. Я не пойму это другой метод или то же свойство?

  • @groznyjairan6887
    @groznyjairan6887 Před 3 lety

    Т.е как я понял, делегат это аналог указателя на функцию в чистом СИ, верно? Ну, если на высоком уровне рассматривать, разумеется

  • @JohnWickMovie
    @JohnWickMovie Před 7 lety

    Делегат получается указатель на функцию?

  • @MrKwinto1971
    @MrKwinto1971 Před 10 lety

    чуть ошибся... делегат void(string), а метод Move с сигнатурой void(int), как тут разобраться без бутылки... или эти делегаты можно вообще объявлять к любым методам с любой сигнатурой, лишь бы получать что хочешь??? объясните пожалуйста....

    • @Defazze
      @Defazze  Před 10 lety

      Делегат - это ссылка на функцию. В рамках рассматриваемого примера мы передаем в метод Move делегат сигнатуры void(string) с тем, чтобы внутри метода Move вызвать передаваемую по ссылке функцию и передать ей некое строковое значение. И тут действительно совершенно необязательно совпадение сигнатур. Потому что параметры метода Move используются для перемещения некоторого объекта, а параметры делегата используются для трансляции некоторого сообщения.

  • @seriga3
    @seriga3 Před 8 lety

    14:31 EventHandler сказали что объясните почему он так называется позже но так и не сказали.
    Начал просматривать не зная как прописывать события но зная, что оно из себя представляет в принципе.
    Так вот когда "события" начали приспосабливать в существующею программу в голове все смешалось.
    Подход описывающий "события" крайне не удачный.
    Разумно сделать два отдельных урока один делегаты другой события.
    К "событиям" подойти как советовал "Алексей Пастухов" ссылаясь на статью "habrahabr.ru/post/213809/?".
    А уже потом событие со стандартным делегатом "EventHandler"
    Как-то так...

  • @aapris1986
    @aapris1986 Před 3 lety

    по сути, делегат позволяет реализовать паттерн стратегия на уровне интерфейса функции (определяемого сигнатурой), если я верно понял

  • @mrspacer1
    @mrspacer1 Před 8 lety +2

    Не до конца понятно отличие открытого свойства (Action Moving) от события (event EventHandler Moving). Зачем ввели события если можно было бы ограничиться использованием свойств?

    • @Defazze
      @Defazze  Před 8 lety +8

      +Yuriy Smirnov А если несколько подписчиков у класса? Тогда последний "затрет" подписки остальных, запихнув в свойство Action Moving свой делегат. Значит надо делать не Action Moving, а List Moving, чтобы новый подписчик добавлял свой делегат в список, не трогая остальные. А список делегатов - это и есть событие, вуаля ) С удобным синтаксисом подписки/отписки.
      Т.е. событие - это просто удобное обертка над списком делегатов.

    • @mrspacer1
      @mrspacer1 Před 8 lety +1

      +Defazze, спасибо за ответ. Но у меня почему-то не затирается подписка и не возникает никаких ошибок если "подписаться" на СВОЙСТВО public MyAction Moving { get; set; } сразу
      двумя методами из класса Program. Подписка происходит точно также как если бы это было событие. Вот так: student.Moving += Show; student.Moving += Show1; При этом срабатывают оба метода и первый не затирается. MyAction это обычный делегат с сигнатурой void (string s), а Show1 ничем не отличаается от метода Show. Может Visual Studio 2015 сама научилась как то распознавать что в свойство передается не один метод, а два ???

    • @Defazze
      @Defazze  Před 8 lety +2

      +Yuriy Smirnov Нет, Visual Studio "сама" ничего не распознает ) Дело в том, что делегаты в C# являются multicast, т.е. широковещательными, т.е. могут вызывать несколько методов, через оператор +=. Что у Вас и происходит. Т.е. это нормальное поведение.
      Другое дело, что в случае свойства разработчик может случайно "перетереть" делегат, использовав оператор = вместо +=. А в случае события это невозможно.

    • @mrspacer1
      @mrspacer1 Před 8 lety +1

      +Defazze, все-таки (предполагая, что мы расставили все операторы без ошибок), получается, что благодаря тому что мы имеем multicast делегаты (а не просто делагаты), можно обойтись вообще без событий.
      Тогда получается, что событие - это избыточный термин, а наиболее корректную его формулировку (которой почему-то нигде нет!) можно обозначить так: Событие - это открытое свойство типа массива делегатов, где вместо методов get и set используются методы add и remove

    • @Defazze
      @Defazze  Před 8 lety +5

      +Yuriy Smirnov Это интересная точка зрения )
      Во-первых, определение события через делегат все-таки есть, вот сходу гуглится: msdn.microsoft.com/ru-ru/library/8627sbea.aspx. "События это особый тип многоадресных делегатов, которые можно вызвать только из класса или структуры, в которой они объявлены (класс издателя)". Здесь же мы видим еще одно ограничение на событие по сравнению со свойством.
      Во-вторых, в C# при желании можно вообще все что угодно определить через методы ). Ибо ничего кроме методов и полей в MSIL не существует. Свойство - это метод, конструктор класса - это метод, событие - это тоже метод. Дополнительные же сущности вводятся исключительно для удобства разработчиков.

  • @user-xe3dj6bh6v
    @user-xe3dj6bh6v Před 10 lety

    Кстати. А имеет ли смысл создавать разные делегаты для разных событий? Вроде как не нужно - и всё же такая возможность существует.

    • @user-xe3dj6bh6v
      @user-xe3dj6bh6v Před 9 lety

      О делегатах в ключе ФП пишется на RSDN в статье о LINQ

  • @MrOzon1res
    @MrOzon1res Před rokem

    Чуть чуть размыто объяснил для чего нужны делегаты. Их основная функция, обращение в другой поток ( к методу и тд ). Т.к. на прямую мы не сможем получить данные. Само понятие слова Делегат уже дает огромный ответ))

  • @wizDoCk
    @wizDoCk Před 8 lety

    4:15 , я учусь программированию по вашим урокам, работаю в новой среде Visual Studio, в вашем примере, ноль в фигурных скобках другого цвета и назначения нежели все остальное, я не могу добиться того же, он у меня относится ко всему прочему в кавычках.

    • @Defazze
      @Defazze  Před 8 lety

      +Alex Ignatjev У меня установлен плагин к Visual Studio, называется ReSharper, вероятно это его рук дело )

  • @lkghost7
    @lkghost7 Před 3 lety

    а разве возвращаемый тип входит в понятие сигнатуры ? согласно спецификации.

  • @MSpontorez
    @MSpontorez Před 9 lety

    скорее всего уже просили делать что-то вроде заданий для самостоятельной работы

  • @artemyazynin2975
    @artemyazynin2975 Před 10 lety

    ага, спс.

  • @FeuermagierDerr
    @FeuermagierDerr Před 8 lety

    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Text;
    return inputString.Count(c => c == 'A');
    Count подсвечивается красным.
    Не могу понять в чем дело.
    Может быть из за того что использую Xamarin вместо VS ? Просто на работе не могу поставить VS, а уроки иногда смотрю с работы.

  • @tadeuskozlovski7286
    @tadeuskozlovski7286 Před 6 lety

    +super

  • @diskortdiskortov4730
    @diskortdiskortov4730 Před 3 lety

    В сигнатуру метода не входит тип возвращаемого значения! Только имя метода и типы его параметров (порядок важен). Но если рассматривать в контексте делегатов, то грубо с искажением так в принципе можно назвать.

  • @vallJune
    @vallJune Před 8 lety

    Разобрался что такое делегат и зачем он нужен, понял что такое событие, но не могу понять почему мы не можем напрямую вызвать метод заместо события? кто-то может пояснить. может на простом примере

  • @alexanderosipov7117
    @alexanderosipov7117 Před 8 lety

    Что интересно, в МСДН сигнатура (не в случае делегатов) определяется по другому. Например, msdn.microsoft.com/ru-ru/library/ms173114.aspx А у Рихтера - так, как в видео.

    • @kristineshahoyan2841
      @kristineshahoyan2841 Před 8 lety

      +Alexander Osipov В контексте перегрузки метода его сигнатура не содержит возвращаемое значение. Однако в контексте делегатов, сигнатура содержит возвращаемое значение. Другими словами, метод должен иметь тот же возвращаемый тип, что и делегат.
      msdn.microsoft.com/ru-ru/library/ms173171.aspx

  • @user-pc4qr6oe8k
    @user-pc4qr6oe8k Před 5 lety

    это нужно параллельно отрабатывать в VS c отладчиком, чтобы понять с первого раза

  • @VitaliyZlobin
    @VitaliyZlobin Před 3 lety

    Сигнатура метода - это имя метода плюс параметры(причем порядок параметров имеет значение). В сигнатуру метода не входит возвращаемое значение.

  • @AlexPlayer1000
    @AlexPlayer1000 Před 5 lety

    Урок трудноватый, картина остается смазанная. + в уроке не сказано какие использовать библиотеки - иногда возникает ошибка на ровном месте из-за не подключенной директивы.

  • @tambules
    @tambules Před 8 lety +8

    сложна сложна, че так сложна ??? нифига же не понятно

    • @tambules
      @tambules Před 8 lety +3

      посоны, я за 4 месяца джаву подтянул, там с callback ами поработал. Случайно наткнулся на этот урок и посмотрел - ну че могу сказать, все собственно понятно, не особо то и сложно)) тут видимо дело опыта) не знаю..) ну и подача такая, что если вы без опыта, хрен что поймете)

    • @oleg274
      @oleg274 Před 8 lety +3

      просто человек прыгает с кода в код. Что бы было все понятно нужно видеть полностью весь код. А не там поменял там поменял, там еще не успел изменить. Крч хаос

    • @MsKarlason
      @MsKarlason Před 8 lety

      +oleg iaremchuk +