We have already mentioned that delegates are used to reference methods that have the same label as them. In other words, you can use a delegate object to call a method that can be referenced by a delegate.
Anonymous methods provide a technique for passing code blocks as delegate parameters. An anonymous method is a method that has no name but only a principal.
You do not need to specify a return type in an anonymous method, it is derived from the Anonymous methods are done by using the Code block A delegate can be called either through an anonymous method or through a named method call, that is, by passing method parameters to the delegate object. Note: the body of an anonymous method needs a For example: The following example demonstrates the concept of anonymous methods: When the above code is compiled and executed, it produces the following results: return statement inferred. 1.61.1. Write the syntax for anonymous methods #
delegate keyword to create a delegate instance to declare. For example:delegate void NumberChanger(int n); ... NumberChanger nc = delegate(int x) { Console.WriteLine("Anonymous Method: {0}", x); };
Console.WriteLine("Anonymous Method: {0}", x); is the bodyof an anonymous method. ; .nc(10);
1.61.2. Example #
Example #
using System; delegate void NumberChanger(int n); namespace DelegateAppl { class TestDelegate { static int num = 10; public static void AddNum(int p) { num += p; Console.WriteLine("Named Method: {0}", num); } public static void MultNum(int q) { num *= q; Console.WriteLine("Named Method: {0}", num); } static void Main(string[] args) { // Creating a delegate instance using anonymous methods NumberChanger nc = delegate(int x) { Console.WriteLine("Anonymous Method: {0}", x); }; // Using anonymous methods to call delegates nc(10); // Instantiating delegates using naming methods nc = new NumberChanger(AddNum); // Calling delegates using named methods nc(5); // Instantiating a delegate using another naming method nc = new NumberChanger(MultNum); // Calling delegates using named methods nc(2); Console.ReadKey(); } } }
Anonymous Method: 10 Named Method: 15 Named Method: 30