C# Delegates & Lambdas Explained

Поделиться
HTML-код
  • Опубликовано: 22 май 2024
  • Function as a value is one of the core functional programming paradigms. In c# it's called a "delegate", today we learn - why delegates are useful, delegate syntax, how delegates work internally and what are closures.
    Patreon 🤝 / raw_coding
    Courses 📚 learning.raw-coding.dev
    Shop 🛒 shop.raw-coding.dev
    Discord 💬 / discord
    Twitter 📣 / anton_t0shik
    Twitch 🎥 / raw_coding
    👉 Try Rider
    www.jetbrains.com/store/redeem/
    RD5K9-4TXXW-KMV3G-NYWSF-3ZSTP
    linqpad: www.linqpad.net/
    Source Code (With Benchmarks): github.com/T0shik/raw-coding-...
    #csharp #delegates

Комментарии • 116

  • @RezaERabbyRER
    @RezaERabbyRER 3 года назад +20

    This channel deserves more subs. Such a nice and underrated guy he is!

    • @RawCoding
      @RawCoding  3 года назад +3

      Thanks, we’ll get there

  • @mikhailkh8560
    @mikhailkh8560 2 года назад +2

    Man - you make things so clear with one single sentence - "delegates is kind interface of function".
    Awesome, I search for it literally a years! Now it so simple!

  • @limitless6572
    @limitless6572 Год назад +1

    I want to master c# and i did strugle with delegates, but you made it so simple, many thanks dude

  • @MrAdamkimbo
    @MrAdamkimbo 3 года назад +2

    I learned a great deal from this. You're providing a great service with this channel. Many thanks!

  • @seanrendall5495
    @seanrendall5495 Год назад +1

    This helped me wrap my head around delegates, thanks a lot!

  • @leafarlua
    @leafarlua 3 года назад +1

    Your content is amazing... And there is so much! Thank you a lot, it really helped me understand better what are delegates.

  • @kpro9047
    @kpro9047 2 года назад +3

    Thanks for this. I really appreciate your teaching method. I am an advanced beginner trying to get to the next level. I found your video to be super clear and to have just the right amount of background detail to fill in the gaps in my understanding of basics.

  • @user-oq9kn8zd2y
    @user-oq9kn8zd2y 2 года назад +1

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

    • @RawCoding
      @RawCoding  2 года назад

      Спасибо, рад что мог помочь)

  • @danurarya0823
    @danurarya0823 8 месяцев назад

    Thanks, this video help me understand better about delegate

  • @StreetBladerBloke
    @StreetBladerBloke 3 года назад

    Super technical explanation..thanks for sharing

    • @RawCoding
      @RawCoding  3 года назад

      Thank you for watching

  • @hugebug4ever
    @hugebug4ever Год назад

    Very clear, Thanks~!

  • @sivasankaria1090
    @sivasankaria1090 2 года назад +1

    It really helps to understand the delegates in better way.. Thanks for that.
    Need Lamda tutorial in advanced manner like this .... :)

    • @RawCoding
      @RawCoding  2 года назад +1

      Cheers and I mean we kinda dissected the lambda as well

    • @sivasankaria1090
      @sivasankaria1090 2 года назад +1

      @@RawCoding Why cann't u get deeper into firebase and its tech with angular ?

    • @RawCoding
      @RawCoding  2 года назад

      I hope it doesn’t come as a surprise, but just because I do tutorials on tech that I know, that doesn’t mean I know everything. I don’t use angular and I don’t understand why other do, vuejs is so much better. As for firebase, I know a little bit so you can expect some content about it.

  • @apofisz1
    @apofisz1 3 года назад +2

    it is the best delegate video ever!

  • @sunnypatel1045
    @sunnypatel1045 3 года назад +1

    Mate I watched many videos this week and this is flawless ! Thank you

  • @ivanvincent7534
    @ivanvincent7534 2 года назад +1

    Understand delegates, generic delegates, anonymous functions, lambdas and a general sense of the complexity hidden in IL. However the last 3 minutes on what is a closure wasn't clear for me.. Thanks for your content.

    • @RawCoding
      @RawCoding  2 года назад

      Closure is a variable in the lambda which comes from the outside, if you mark a lambda to be static closure won’t be allowed .

  • @Gazda99
    @Gazda99 3 года назад +2

    Wow this is very good job, first video about delegates when someone finally describes it in a easy but accurate way. Keep doing that :D

    • @RawCoding
      @RawCoding  3 года назад

      Thank you, glad you like it )

  • @mebtuabebe8428
    @mebtuabebe8428 Год назад +1

    Delegates put right! This tutorial would have been the answer if i had asked delegates what they really are.

    • @RawCoding
      @RawCoding  Год назад +1

      Glad I could help 👍

  • @Morteza-so8qh
    @Morteza-so8qh 4 месяца назад

    thank you

  • @BasiliskSupreme
    @BasiliskSupreme 2 года назад

    Hey thanks man . Probably one of best tutorials to understand delegate - especially the behind the screen - nuts and bolts. Quick question though:
    Lets say I have a second method Main() which is overloaded, then I get a run-time error as the Delegate is not able to resolve which lambda function to target. How do you fix this? I tried using the parameters of GetMethod() but no avail . Please help !!

  • @stefanbogdanovski7678
    @stefanbogdanovski7678 3 года назад +3

    This is a great content and you represented it very well! If I may ask for your opinion, what would be the most wanted skills for a .NET full stack postion? Cheers!

    • @RawCoding
      @RawCoding  3 года назад +4

      - attitude to learn - if they don't know .net or any other tech that's part of the "full stack" they can just learn it. This can be shown by trying a lot of different things, or personal projects, some kinds of participation in the community.
      - problem solving skills - this knowledge is transferable between all parts of life and abstract enough to mean if you are good at problem solving in 1 area, you are most likely going to be as good in another once you learn the basics. This is quite hard to gauge in people, but is generally a skill that you learn throughout life; computer companies sometimes just hire Maths and Physics graduates because the problems they solve are a lot harder than the ones we programmers face.

    • @stefanbogdanovski7678
      @stefanbogdanovski7678 3 года назад

      Thanks a lot!

  • @Asurow
    @Asurow Год назад

    Out of all the video in youtube about interface and delegates. I mangaged to differentiate and undestand clearly from this video. Should include interface in the video name. Thank you.

  • @Sindrijo
    @Sindrijo 2 года назад +1

    Hi there, great video. I have a question for you. I've been trying to find examples an actual practical use delegate combination (outside of subscribing to an event) but I haven't been able to which makes me think it is just an inherited/extra feature of how the language designers wanted the event subscription syntax to be (+= and -=). I don't think I've ever seen an example in real-life code where a delegate is passed around as an argument and other delegates are added to it. I can sort of imagine it happening in some builder-pattern, maybe, but that is still a long shot, the delegate only allows you to add/remove from the delegate queue and invoke it.
    Do you have any examples where delegate combination / multicast delegates (outside of events) would be a useful, readable, desirable way to write code? To me, the fact that a delegate can be turned into a multicast delegate at any point, is kind of scary, I've always treated them as just a 'function pointer' and not a 'container with possibly multiple function pointers'.

    • @RawCoding
      @RawCoding  2 года назад

      it's used for the Observable pattern, other than that nobody really uses it for anything else. also I prefer to just have the IObservable interface

  • @rajenlenka7806
    @rajenlenka7806 2 года назад +1

    Only 60 Percent Gratitude This Time ...+5 for Keepin interest ... :) ...I will try again :)

  • @oleksandrdidenko1872
    @oleksandrdidenko1872 3 года назад

    Suggestion for the next video explanation - expression, expression tree and other related staff. Interesting to know your self specific explanation :)

    • @RawCoding
      @RawCoding  3 года назад

      I’ve already covered this topic, check the playlist

    • @oleksandrdidenko1872
      @oleksandrdidenko1872 3 года назад

      @@RawCoding I missed it! Thanks))

  • @vuongvu5134
    @vuongvu5134 3 года назад +1

    How do you enable to auto-generate of the interface implementation. Also to change the color coding of the interfaces/classes to be blue (mine is white)? Also I'm not getting the references appear for my classes/methods?

  • @isachells9859
    @isachells9859 2 года назад +1

    Thx

  • @tisurmaster
    @tisurmaster 3 года назад +1

    delegates, interfaces, abstract classes, polymorphism.. oh my!

  • @mohammadzakareatfaili9566
    @mohammadzakareatfaili9566 3 года назад +2

    Great course specially when digging into real code generated thanks a lot.
    Could you please provide real world example not several video series, I always understand the concept but when coding I don't know where to apply specially in delegates and threading.

    • @RawCoding
      @RawCoding  3 года назад

      Func Factory
      You can have a parameter like that which will create a fresh instance of an object each time it needs it, and you can supply different creation processes.

    • @mikhailkh8560
      @mikhailkh8560 2 года назад +1

      Delegates is a great thing, but not all tasks require to use it. There are plenty of topics where you could solve your thing with interfaces.
      Any way for real examples - google for observer pattern in C#.
      Also i found this wery useful with view-controller concept where you inject function of controller inside view. For example one class describe form with a button - viewer, another class contains function which should be invoke when user click.
      And you could use same form with many controllers, or you could replace controller, or test controller without interface, cause both are indepent - google for dependency injection.

  • @danielchoo5560
    @danielchoo5560 2 года назад +1

    Hi, it is great tutorial. Would like to request have a tutorial regarding UI Thread, Window Form Control Method Invoke and etc.

    • @RawCoding
      @RawCoding  2 года назад

      You’re welcome and no ty

  • @PivaWillianS
    @PivaWillianS 2 года назад +1

    Just to be technical about it the return type isn't part of the method's signature,
    but besides this really good video.

    • @RawCoding
      @RawCoding  2 года назад

      It is not! Thank you

  • @SaveTheHedgehog
    @SaveTheHedgehog Год назад +1

    what setting do you use that transforms the => to an arrow (symbol)? do they call it fira code?

    • @RawCoding
      @RawCoding  Год назад +1

      They are called ligatures and are usually built in to the font you use, I use JetBrains Mono

    • @SaveTheHedgehog
      @SaveTheHedgehog Год назад

      @@RawCoding aha, thanks. I will figure it out.

  • @XpLoeRe
    @XpLoeRe 3 года назад +1

    this is fucking amazing

  • @stefanioan7569
    @stefanioan7569 3 года назад +2

    is the F12 option available only for the paid premium version?

    • @RawCoding
      @RawCoding  3 года назад +1

      Think so,it’s called IL spy and you can get it on visual studio

    • @stefanioan7569
      @stefanioan7569 3 года назад

      @@RawCoding I did open ILSpy it with alt+shift+r. Thanks for support and all the hard work

  • @oladipotimothy6007
    @oladipotimothy6007 3 года назад +2

    How do you get this good? How do you practise to sharpen your skills

    • @RawCoding
      @RawCoding  3 года назад +1

      Google read write review repeat

    • @oladipotimothy6007
      @oladipotimothy6007 3 года назад +1

      @@RawCoding I will have to stamp that on my wall

  • @yoosufriffath6284
    @yoosufriffath6284 3 года назад +1

    umm.. I don't think the return type is actually considered as a part of the method signature? I could be wrong lol..

    • @RawCoding
      @RawCoding  3 года назад +1

      It is for the purpose of comparing delegates.

  • @apofisz1
    @apofisz1 3 года назад +1

    in this example how can i use += ? how can i add more methold with +=?

    • @RawCoding
      @RawCoding  3 года назад

      Yea, haven’t really covered it in the video. That’s essentially function composition and you just have to keep matching the signature of the function. You can also call the Combine method on the delegate

  • @clearlyunwell
    @clearlyunwell 3 года назад +1

    👍🏽

  • @farmanguliyev
    @farmanguliyev 3 года назад +3

    The concept is very easy.

    • @RawCoding
      @RawCoding  3 года назад +3

      Not for everyone

    • @elan2199
      @elan2199 3 года назад

      Not 4 me. I'm dumb af lul.

    • @amjad-se
      @amjad-se 3 года назад

      Not 4 me either :)

  • @sunilanthony17
    @sunilanthony17 3 года назад +1

    Delegate is a container that a function(lamda) goes into => Awesome();

  • @haythambiadse5137
    @haythambiadse5137 Год назад

    you are red hot chili pepres in word of coding channels

  • @facejets
    @facejets 3 года назад +1

    If you're saying "marginally" at around 11:40, you have the wrong definition for "marginal". To soften the blow, I'll point out that these first-class function doohickeys are finally starting to click for me. Thanks! Subscribed immediately.

    • @RawCoding
      @RawCoding  3 года назад

      Aha yes, the word should be drastically cheers :D

  • @RoboChickenAnimation
    @RoboChickenAnimation 3 года назад +1

    can you make a video on error handling in C#? Thanks.

    • @RawCoding
      @RawCoding  3 года назад +1

      What’s your concern with error handling?

    • @RoboChickenAnimation
      @RoboChickenAnimation 3 года назад +2

      @@RawCoding how to elegantly throw and handle exceptions in a way that avoids them being raised everywhere making code harder to read and trace through. Thanks.

    • @RawCoding
      @RawCoding  3 года назад +1

      Avoid exceptions

    • @RoboChickenAnimation
      @RoboChickenAnimation 3 года назад +1

      @@RawCoding I’ve heard this a few times. Could u send me a link to anything that would steer me in the right direction I’d very much appreciate it!

    • @RawCoding
      @RawCoding  3 года назад +2

      Just don’t throw exceptions. Handle unexpected ones in business critical paths

  • @antoniomatsumura2007
    @antoniomatsumura2007 Год назад

    class Program
    {
    public delegate void DelegateFunc();
    public static void Main()
    {
    List Funcs = new List() { () => { Console.WriteLine("f0"); }, f1, f2 };

    foreach(DelegateFunc Func in Funcs)
    {
    Func();
    }
    }
    public static void f1()
    {
    Console.WriteLine("f1");
    }
    public static void f2()
    {
    Console.WriteLine("f2");
    }
    }

  • @mfundofalteni2620
    @mfundofalteni2620 3 года назад +1

    Delegates are basically stored procedures for c# 😅

    • @RawCoding
      @RawCoding  3 года назад

      Ohhh man don’t know about that one, that’s a bold statement

  • @Raid77
    @Raid77 Год назад

    20:10

  • @PaulSebastianM
    @PaulSebastianM 3 года назад +1

    Beach... haha. 😅 pandemic side-effects.

  • @tuberklz
    @tuberklz 3 года назад +1

    wtfunc

  • @stewiegriffin6503
    @stewiegriffin6503 Год назад +3

    u are very confusing

    • @RawCoding
      @RawCoding  Год назад

      Eyyy Stewie how you doing