Do not miss our Interview Question video series 30 Important C# Interview Questions : kzbin.info/www/bejne/eHzcn3h4hdacf68 25 Important ASP.NET Interview Questions : kzbin.info/www/bejne/ponQfpejf7p2Zsk 25 Angular Interview Questions : kzbin.info/www/bejne/Y5vIoKx6f6mmia8 5 MSBI Interview Questions : kzbin.info/www/bejne/a3abYmiXjaaqj7M
@mrbananaman80324 жыл бұрын
Thank you for clarifying the "WHY" right away and calling out how stupid delegates seem at first glance. In other tutorials that just start teaching you how to use them I can't concentrate and learn because I'm waiting for the actual reason you'd want to use them in a real situation the entire time.
@kebabfoto3 жыл бұрын
Yeah that's really missing sometimes
@rishikeshnerkar1367Ай бұрын
How can you soooo ME! this is exactly what I was thinking!
@DGangstaVEVO9 жыл бұрын
Every tutorial i've watched made me think delegates are very complicated until i've watched this and it became so simple! You are awesome, i love the way you teach!
@BeLogicalAlways6 жыл бұрын
Not that great
@lica2814 жыл бұрын
Came here just to say this. Bravo. Fantastic explanation.
@MrGramatix4 жыл бұрын
Yes very true, I read many tutorials and watched few videos too but he explained very well in a simple manner
@maxron65144 жыл бұрын
Yes very well explained
@alagarswamyingersoll4 жыл бұрын
True.I feel the same.
@MeleeChannel2 жыл бұрын
The biggest question for me when hearing about Delegates in the first day was "Okay, but why? This seems awfully complicated to do something massively roundabout", and thankfully you solved that in the first minute! Many thanks for the wonderful explanation :)
@scottcase61957 жыл бұрын
I appreciate that you talked about the reasons why to use delegates. Most videos I have found on this topic just go directly to code and show how to use the delegate with no attempt to explain why, or what it's doing or how it fits in. It's a difficult concept to get clarity on, and a lot of KZbinrs don't seem to really know how it works or why; they just know how to make it work without really understanding.
@titanicpat12752 жыл бұрын
I watched an 90 minute tutorial on Delegates yesterday, but couldn't really understand why they looked strange and what I might use them for. Less than 9 minutes here and its clear. Thank you!
@permindersingh12165 жыл бұрын
Just adding to what you said, delegates can also be used to invoke function asynchronously on a separate thread using BeginInvoke
@dlmaher19593 жыл бұрын
Excellent !!! Very concise, clear explanation. This the second of your tutorials I have followed, first was threading. Just some general feedback; maybe in your examples you should use real world "objects" when discussing classes and functions. So instead of just "obj", use something like "ACUnit". This has real world context that makes it easier for people to follow your examples. Each AC has properties and methods that u can call I think it makes teaching easier
@nerdcartoon25443 жыл бұрын
Indian accent? Yes Less than ten minutes? Yes 6 years old? Yes Great explanation? Yes Dunno where this comment going anymore? Yes *This video is a legend.*
@ThePGloor8 жыл бұрын
I'm not new to delegates, but found this presentation very useful when I've been looking for a way to explain delegates to others. After watching your video explaining delegates has become easy and meaningful. Thank you!
@anshubudhiraja7 жыл бұрын
I don't think that it is only about callbacks. In C# 7, you can pass a method as a parameter, without using delegate, so according to you these delegates should have been removed from C# 7, but delegates have one more, more important role to play and that is to use it for events.
@rongreen36486 жыл бұрын
Nice explanation showing that a delegate is more than just a simple function pointer. It is a communication device, a callback. Good "delegates from India" illustration!
@peculiarbabalola44302 жыл бұрын
You just got an extra subscribers. Succinctly explained. Not assuming and talking about the why. It is missing in most videos. Most people assume that the point will be gotten from just the simple but "stupid" definition. Thank you for going the extra mile to explain the why...very important and much appreciated.
@pramodkumarw5 жыл бұрын
hey shiv ji,you told that i is used for callback ,callback and callback.but can you my below example public List FindAll(Predicate match); FindAll method is present in List that takes predicate delegate.but i think that is not used for callback.it is used to provides decouple our logic to filter item.please correct me if am wrong and also tell me what is used of predicate delegate .it is used for callback or something else
@macsoccer20122 жыл бұрын
Thank you!! I’ve been searching for forever for a decent explanation of delegates. You made it clear and simple to understand in this video. 🙏
@oorja19839 жыл бұрын
good basic kick start but it would be great if you make more videos on this to explain the real power power of delegates when we talk about loosely coupled systems or Event Broker or Observer kind of pattern and that will help the community. Thank you making this video and wish to see your more.
@RedBirdOBX7 жыл бұрын
Thank you. This is the first video to explain not HOW to use one....but WHY you could use one. Thanks again.
@colinrickels2015 жыл бұрын
Your accent is more crisp then any teacher i know. Very easy to listen to and comprehend. Keep up the good tutorials !
@prashantb97718 жыл бұрын
screen should have less zoomed so everything could have been displayed in one page
@drianlarde4 жыл бұрын
this is so true..
@Someone-jf3mb7 жыл бұрын
So basically, what he is trying to say for this 8 mins long video is you can call functions from a different class (Scopes), which can be use to call back. Let's say there are two classes A and B. A calls a method in B class. if the method in B wants to tell A some data, it can't unless with delegate. With delegate: A calls a method in B class which has a delegate. A needs to specific what functions in A that B wants to call. B passes in data or just call the delegate (function in A) Please correct me if I am wrong. Hope this helps anyone.
@rupeshkamble91057 жыл бұрын
Steve Lo thanks.. you explained it very well..
@rabinzx6 жыл бұрын
thank you. I was still lost after watching the video, but you sorted things out for me. So delegate has no use under the same class, right?
@unskeptable5 жыл бұрын
Some one broken english sorry
@orionmec2 жыл бұрын
Because the definitions that I was given, "a ptr to a function" I have had a really hard time getting it. Thank you brother, you hit the nail on the head. Or maybe into 'my head'... I get it now!!! Thanks.
@andyhong41642 жыл бұрын
Another Indian bro pulling us all up here. Thanks so much!
@alagarswamyingersoll4 жыл бұрын
Excellent explanation sir.I appreciate it.I have been searching to know why we use delegates in C#,now,I have the answer for it.Thank you sir.
@bruinflight4 жыл бұрын
This is a great tutorial thank you! And now I will look for the purpose of delegates in He-Sharp :-)
@sasiskitchen95666 жыл бұрын
In simple words, if you have a thread running and you want to access the other thread method you can use delegate. Cross threading can be performed using delegate. Communicate between two foreign threads. That’s it. Have two threads running and try to access the other thread method, which will end up in cross threading error in runtime. Now use delegate and invoke that method. Wow it’s running.
@robertmasterofpain68638 жыл бұрын
Very clear explanation. I've finally got it!
@adrianozuna214910 ай бұрын
Finally!!! I always thought delegates were a very stupid concept because i never understood the point of using this, but this is the first video that i find correctly explains them and gives a practical example of them.
@akshaytalekar28806 жыл бұрын
You Made Delegates Simplest. This is the Great Understandable Explanation Ever I Have Seen.
@DineshKumar-lq2ck2 жыл бұрын
Nothing is difficult you have the right Teacher. You are the one.
@BahawalTV5 жыл бұрын
Most of videos does not explain the real NEED of delegates. Delegates provide ability to pass METHODS as PARAMETERS to other METHODS. So that other methods can execute them. In Javascript functions are objects. So passing a function as parameter to other methods is not a problem. But in C#, you must add the function reference to a delegate object, and then it can be passed to another method, which can execute it as and when needed. Most popular use of delegates is in implementing callback methods or event handlers. C# EVENTS use delegate internally to implement events and event handlers. The PUBLISHER class declares a delegate, and then an event which uses the delegate internally. Then raises the event as and when needed. The SUBSCRIBER class subscribes to the event of publisher. Internally, it just adds the EventHandler method reference to the delegate of SUBSCRIBER. That is the whole story.
@oskarkarlsson47073 жыл бұрын
Best delegate video for understanding the REAL purpose of delegates. Thank you!
@shaziahussain30297 жыл бұрын
Thanks now i learned that a delegate can communicate between two classes or functions and update the data into the functions of classes or between functions as a pointer to the function.
@yasinmagan22442 жыл бұрын
Very clear and concise way of explaining it. Thank you very much
@sashikumar3136 жыл бұрын
iam little confused pls correct me we can directly call a method right like-- public void Longrunningmethod() { for(int i=0;i
@lessknownindeed2 жыл бұрын
What a great explanation! The easiest teaching means the huge number of study in the background!
@Cromfeld2 жыл бұрын
Absolute plain and simple! The first video, when I got ann explaination why should I use a delegate.
@angel_machariel9 жыл бұрын
This was a crisp and clear presentation of the essence of the delegate keyword.
@nepalxplorer2 жыл бұрын
Thank you! This is the first video or any material I'm looking about delegates and I can't believe I'm 100% clear, Keep up the great work! :)
@rmarikar14 жыл бұрын
The BEST explanation of delegates. Thank you.
@sureshmuttagi43808 жыл бұрын
Nice explanation but in this example we can directly call the method "CallBack(int i)" like "Program.CallBack(i)" within for loop. Why we need to use Delegate stuff..... Please correct if I am wrong. Thanks in advance.
@sharadpatil69166 жыл бұрын
If we call CallBack function directly then it will wait for end of LongRunning loop. Delegate display information to UI what exactly going on to back end.
@dnfvideo6 жыл бұрын
What if MyClass is consumed in ASP.NET MVC UI. It will display in console and data will never be passed back to the caller. The goal is not to display in console , its communication between two entities.
@etbilu62655 жыл бұрын
why wait loop end ??????please answer me "!!!@@sharadpatil6916
@x126244 жыл бұрын
I liked the way he explained it, literal explanation of the delegate and finally the callback function example. It made a little more sense now.
@sandokanfirst23 жыл бұрын
It's a feature of comparisons that they fall short _somewhere_ but if I'm right the comparison of delegates as a language construct to real-world delegates lacks an essential property of the idea behind them. Don't get me wrong - I think this explanation is worthwile, but it is important to know its limitations too. As I see it, the _function_ of C# delegates is indeed similar to that of (country) delegates (i.e. to communicate between two parties). However, an important property of C# delegates is that they are generic, whereas delegates in the real world are _specific_ entities (persons).
@selvakumarmech79592 жыл бұрын
Good explanation, but I have a question. In the below class, I have tried the same call back function using the normal function call, so I thought the delegate might have some other need to be in c#, Apologies, I am new to C#, can you correct me if I wrong, Note: I can't do the below function call method with static class, is that reason, the Delegates come into place? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Delegates { class Program { static void Main(string[] args) { BaseClass obj = new BaseClass(); string Temp = Console.ReadLine(); } } public class BaseClass { public BaseClass() { MyClass myClass = new MyClass(this); myClass.LongRunning(); } public void CallBack(int i) { Console.WriteLine(i); } } public class MyClass { private BaseClass _myclass; public MyClass(BaseClass program) { _myclass = program; } public void LongRunning() { for(int i = 0;i
@menspa24716 жыл бұрын
The best explanation ever. Simple and clear
@jerryborzobohaty22122 жыл бұрын
This was the first explanation I had heard that made sense to me. Thank you!
@XEQUTE2 жыл бұрын
I didn't like the fact that this video had images placed in a very weird way, In some parts, it was not possible to see the content because it was blocked by the images. Also, It didn't show the whole code at once just because he had it zoomed in. BUT, this is the only video that got to the point firsthand. So 7/10. good job!
@6073 жыл бұрын
It would be nice if you showed your full code at the end! Edit: Although I don't think this is sufficient for my use case anyway. You're talking about callbacks, callbacks and callbacks, but I need to use a delegate because I'm working on different threads.
@programuoki-lt14652 жыл бұрын
Feel the same style as Java JDK 1.8 Functional lib with Interfaces, Combining with Lamdas you able to have more generic methods and pass any function like 2+2, 2*2, 2/2 and so on. BTW Delegate word translation is to delegate Job to other or Out sourcing Job :)
@ziia05282 жыл бұрын
Nice. You also can call delegate via event so that event can be subscribed and its output can be utilized on client side.
@rajeevjha37146 жыл бұрын
clearly explained basically using delegate we can also pass method as a parameter. thanks a lot.
@gasstove94375 жыл бұрын
need some real time examples to understand this in more proper way.
@asagiai49654 жыл бұрын
Callbacks * 3 Though if you don't know callbacks you can look at Javascript it have simple definition that can work in many lang. Basically think of delegates as variables that can represents functions. ( As long as it *match the function) Example Delegate void sample_delegate(); // this delegate matches all functions that are void and have no arguments. void say(sample_delegate callme) { //INVOKE callme } void hello() { Console. Writeline("Hello"); } //Now you can make say say hello say(new sample_delegate(hello)); **the very important thing about delegate or callbacks is they are not the functions they are representative of functions*
@sypo_x18913 жыл бұрын
@@asagiai4965 thanks man this shit was so damn helpful i appreciate it dude
@asagiai49653 жыл бұрын
@@sypo_x1891 you're welcome
@AkshayPatil-lm2ps8 жыл бұрын
Perfectly explained. it was confusing Thanks.
@fredyuldashev4 жыл бұрын
I'll be honest? This got my very close to understanding! Good Job!
@kristinadanileviciute47506 жыл бұрын
You create a base class FOO, and another subclass BAR that inherits from base class . Also you have some another class FUU {public int FUUproperty{get;set;}=0;} with some property. BAR cannot inherit from multiple classes so declare protected FUU testFUU=new FUU() in base class. Create methods in base class: GetFUUstuff(){ console.write(testFUU.FUUproperty)} SetFUUstuff(int myval){testFUU.FUUproperty=myval} . Create object for FOO and for BAR in Main(). those objects of type FOO and BAR both can call GetFUUstuff() and will receive whats inside that FUU so GetFUUstuff and SetFUUstuff are the Delegate Methods
@endeshaw10002 жыл бұрын
AWESOME video ! Im programming since 15 Years but nobody could tell me the real BENEFIT of using complex delegate-syntax instead of simple method calling but this callback thing makes totally sense :) But if getting updates while a method is processing, why they are using so often delegates in simple getter and setter? Why you should have an real time update inside a getter especially when nothing is "returned" while getting the value, except the final return at the end? Are Delegates slower the more "communication" is happening between caller and method? I mean in relation to a "normal" implemented method that simply outputs the counter inside the loop.
@RealityCheck6T92 жыл бұрын
Really good video. Just one request, could you please zoom out at the end and show all the code?
@MrGramatix4 жыл бұрын
Thanks very much for your simple explanation about delegates
@_sudipb Жыл бұрын
This is the best explanation I have seen. Thank you. 👍👍
@nihar47133 жыл бұрын
This is the best explanation of delegates I've seen
@eltondaries12154 жыл бұрын
Very simple and effective explanation
@TamilistTheGamer8 жыл бұрын
It took me a while to understand delegates, but now it seems to be clicking. Thanks :D
@minelove7897 жыл бұрын
I am a Nepali delegate to India :)
@HemanthHemu8 жыл бұрын
Totally confused 1.U have used the same object name 'obj' for MyClass and CallBack, 2.C# isCaseSENSITIVE so CallBack and Callback are different, 3.Although the signature(return type void and parameter int i) of CallBack(delegate) matches with that of Callback(method), the method was never bound to the delgate directly in the code. So how is the control flow going on ...?? Which method is getting called..?? Clarify Please.. Thanks
@asrowley16 жыл бұрын
I had the same issues... have you figured this out?
@prashanthvunnam62436 жыл бұрын
There is no confusion you have to learn what is call back functionality
@prashanthvunnam62436 жыл бұрын
Step1 he created delegate Step2 he is used that delegate in other running method .in that method that delegate call back with I Step3 Main he created another method which takes int I similar syntax of delegate and assigned that method to delegate
@Dismanameboi2 ай бұрын
You are easily the best teacher 😊
@KamilKubiak967 жыл бұрын
This is the best and most human like explanation I could find. I got the concept now, thank you so much!
@govindaraoommi99003 жыл бұрын
really thanks a lot sir , I thought delegates re really tough to understand but now its easy with this video
@joesmith19227 жыл бұрын
Brilliant! I finally see what a delegate is used for. Thanks!
@sarmistharay59215 жыл бұрын
Great... Explanation Sir.Thank you so very much.
@jmora71014 жыл бұрын
ok you got the point. but delegate is a class pointer to a function that can you use to implement callback.
@mathboy81882 жыл бұрын
He's certainly right that delegates are used for callbacks... but that's not their only purpose. They're embedded in events, which are a specific kind of callback setup. They can also be multi-cast, so that multiple functions can be called from one delegate invoke, via the + (and - to remove) operator. But the big usage of delegates that's not a mere variant on the callback notion is that delegates serve to ABSTRACT and DECOUPLE code. When you pass a delegate into a routine, you're telling the routine that the delegate will do something - potentially taking in some parameters, and potentially returning some values - but hide from the invoking routine precisely exactly what the delegate is doing. Consider, for example, a delegate to display the results of whatever computation was performed. If you pass a routine a DisplayResults delegate, the routine will invoke it without needing to know what exactly it's doing - maybe it's displaying to the console, maybe it's updating a webpage, maybe it's sending the results to a printer - the invoking routine doesn't know and doesn't care when it calls *_displayResults.Invoke(valuesToDisplay);_* . This is SOLID programming when the invoking routine shouldn't responsible for knowing about how the results are displayed - only that the results are somehow being displayed (SOLID-S). It's made the invoking routine open for extension, but closed for modification (SOLID-O), i.e., you can change HOW the results are displayed without changing a single line of code WITHIN the invoking routine (so no recompilation & redistribution of the invoking routine is required). Displaying the results is also often a lower level detail than invoking routine should care about, so this is can be a form of dependency inversion (SOLID-D). Although not an interface, delegates can also serve a purpose similar to that of SOLID's Interface Segregation Principle (SOLID-I), in the sense that, when passing a delegate to a routine, you're handing that routine precisely what it needs to do its job - no more and no less. If you passed the routine an entire object, you'd be giving that routine access to all of that object's available properties and methods, most of which the routine probably doesn't need (and as well as, potentially, additional coupling that isn't needed). So either directly or in spirit, delegates can serve to implement 4 of the 5 SOLID principles. There's more to be said, but they're mostly consequences of the above. As a consequence of abstraction and decoupling, delegates are invaluable when unit testing. Because delegates are "handing functionality around", they promote composition in general, and even object immutability by handing their abstracted functionality into an object's constructor. Bottom line, by using delegates, the invoking routine is decoupled from the implementation details of how the invoked delegate actually does its work.
@vicmeister99963 жыл бұрын
Very useful, perfect explanation
@logictech62286 жыл бұрын
at last I understood what is delegate ..Thank you.. demonstrations should be like this. I've subscribed your Chanel
@kekistaniattackhelicopter22426 жыл бұрын
Finally a clear explanation.
@sreejithg48303 жыл бұрын
Brilliant explanation. Thank you.
@harish05558 жыл бұрын
Thanq very much loved the expilination and the way of using the Delegate ... Kudaoos ...
@zebasxx6 жыл бұрын
thanks for the video, I really appreciate when some one spend time trying to share knowledge. Despite that, I would advice you to show the full code and smaller text, I got lost in your explanation because for the big text.... got me crazy.
@TheChodex5 жыл бұрын
Thanks for very clear explanation of delegate. The way you explained the origins of delegate in English dictionary was very helpful.
@korukondamehervihari70254 жыл бұрын
Very good explanation. Thank you so much. Thank you so much. Thank you so much.!
@sushilsuthar3565 жыл бұрын
Now i got the actually use of delegate, They are so powerful.
@KingTornado6 жыл бұрын
Excellent explanation . Now i understand why we need delegates.
@subhraswarup6 жыл бұрын
The best explanation of delegates ever. Thanks
@stevebuddy68278 жыл бұрын
Teach me more please!!! I love your style of teaching! :)
@timothyn46997 жыл бұрын
I'd say the naming in this example confuses me, if I understand right, the obj in main is not the same as the obj in MyClass, so they should've been named differently for clarification (in my opinion). Also, is there a Callback type? That's what it seems like from MyClass, but to give a function in Main the name of 'callback' as well is confusing. (While in this example all we did was for loop i and increment it, may be handle to just put comments about what other practical code may be used in such a situation)
@asrowley16 жыл бұрын
Agreed - the naming here is confusing. Also it is not clear to me where the delegate is instantiated...
@zx17017 жыл бұрын
Excellent explanation of Delegates. Thanks!
@xtonetware54936 жыл бұрын
You nailed it sir... Best concise explanation on delegate i have watched so far.. I wish i could give you a triple like and or subcribe click.. Thanks again.
@finalGuessing7 жыл бұрын
I'm game developer I think delegate are very useful for something like this. void printThisWithFunc(System.Action PrintStuffFunc, int someParameter){ var thingtoprint = ""; /// do something very long with those parameter. /// PrintStuffFunc(thingtoprint); } /Then let assume we in Unity private void Start(){ printThisWithFunc(print, 200); printThisWithFunc(Debug.Log, 200); printThisWithFunc(System.Console.WriteLine, 200); } If you mix and match with some OOP stuff you can done some tricky stuff very productive and readable.
@taskinkhaleque21008 жыл бұрын
simple and clear presentation.
@utkarshchopra8153 Жыл бұрын
Sir You could have added Console.WriteLine() inside the LongRunning() method, why use a delegate here ?
@electrocatalyst6 жыл бұрын
It's so funny that you pronounce C-Sharp as shisha :D
@ahmedfayyad96964 жыл бұрын
yeah :D i think so
@spwim4 жыл бұрын
Anybody else felt like smoking a bong? 🤣
@raymondfinton31774 жыл бұрын
Nice explanation and very quick. Just what I needed. Thank you.
@codezard15 жыл бұрын
This can be done without delegate also. We can directly call "Callback" method in "for loop". It will give the current running number. Still not clear. Please help me on this sir. Thanks!
@SD-gj2by6 жыл бұрын
Awesome explanation and video. Totally get it! Thankyou
@nadeerakuruppu22012 жыл бұрын
Thank you for the great explanations
@itsmeafridi8 жыл бұрын
Read a few of the books but i found this one very well explained.
@swinalchafle3 жыл бұрын
Nicely explained... Great job
@BritshBeef16 жыл бұрын
Really good Tutorial, thank you from the UK!
@kokoronai5946 жыл бұрын
Maybe use a scenario that would actually mandate the use of callbacks. What you showed here, even in the latter example, would be far easier to achieve without delegates.
@ronen1165 жыл бұрын
you are a Great Teacher !!!!
@imadabab3 жыл бұрын
Excellent explanation. Thanks a lot. I have subscribed.
@Atezian2 жыл бұрын
I still don't see why you had to use a delegate. Couldn't you just reference the other classes method directly?
@tvtubeverywell3606 Жыл бұрын
Now you can Separate Code - MyClass from the main Code - Program and Give MyClass to other Developers and they can modify it without making changes to the Main Code. It makes code loosely coupled.
@Anutosh13 Жыл бұрын
Now you can Separate Code - MyClass from the main Code - Program and Give MyClass to other Developers and they can modify it without making changes to the Main Code. It makes code loosely coupled.