#551 – Use Anonymous Method When Adding to an Invocation List
March 30, 2012 2 Comments
Recall that an instance of a delegate can refer to more than one method (delegates are multicast). In addition to using an anonymous method to declare a new instance of a delegate, you can also use anonymous methods when adding a new method to an existing delegate instance. (Adding to the delegate instance’s invocation list).
private delegate void StringHandlerDelegate(string s); static void Main() { // Declare new delegate instance, with anonymous // method in its invocation list StringHandlerDelegate del1 = delegate (string s) { Console.WriteLine(s); }; // Now add a 2nd method to delegate, also using // anonymous method del1 += delegate(string s) { Console.WriteLine(new string(s.Reverse().ToArray())); }; // When we invoke the delegate, both methods are // called del1("Mairzy Doats and Dozy Doats"); }
when I should write ‘public delegate …’ and when I should write ‘private delegate …’ I mean what is the difference between ‘public delegate …’ and ‘private delegate …’ ???
You would make a delegate public when you want the delegate type accessible to code outside of the class in which its defined. For example, if the delegate type will be used as the declared type of a public event, then it must be public in order for client code to subscribe to that event.