On Sunday, 8 September 2019 at 10:04:57 UTC, Joel wrote:
I'm trying to understand delegates. Is there any good ways I can get a better understanding of them?

Simple, don't make it harder than it is.

Delegates are basically functions... that is, function pointers(they point to some function somewhere in space)... BUT they include a "context". The context a scope.


{  // In some scope

   int x;
   d = () { writeln(x); };
}


() { writeln(x); };

is the function defined as a lambda(inline).

It accesses a variable outside of it, that is, in the scope... which is called the context.

d is the delegate, it is a function pointer that holds the function AND the context pointer.

We can then do

d();

which called/executes the function... the function is called, and x can be referenced because d stores the context.

If you do not understand functions, then function pointers, you can't understand delegates.



Reply via email to