Delegate is a type that wraps a method call. Delegate instance can be passed between methods like a type and it can be invoked like a method.
There's a three way how to create and use a delegate.
- Create an instance of a delegate by explicitly initializing it with a method that is defined somewhere in the code. This way is used in .Net Framework version 1.0.
- Create an anonymous method for initializing delegate. This way is used in .Net Framework version 2.0.
- Use lambda expressions. This way is used in .Net Framework version 3.0 (and above).
Below is a source code you can use to see how to use delegates.
1 using System;
2 3 namespace DelegateTest
4 { 5 class Tester
6 { 7 // Create a delegate instance. This one takes one parameter, which is a string type
8 delegate void TestDelegate(string s);
9 10 // The method associated with the named delegate
11 // (same signature as delegate has)
12 static void DelegateMethod(string s)
13 { 14 Console.WriteLine(s);
15 } 16 17 static void Main(string[] args)
18 { 19 // 'Original way' of using delegates
20 TestDelegate firstTest = new TestDelegate(DelegateMethod);
21 22 // Using .Net 2.0 anonymous method for initializing delegate
23 TestDelegate secondTest = delegate(string s) { Console.WriteLine(s); };
24 25 // .Net 3.0 gives us lambda expressions
26 // The type of s is inferred by the compiler
27 TestDelegate thirdTest = (s) => { Console.WriteLine(s); };
28 29 // Invoke delegates
30 firstTest("Hello, I'm the first delegate");
31 secondTest("And I'm second delegate, .Net 2.0 style");
32 secondTest("Greetings from delegate number three, with some lambda expression goodness");
33 34 Console.WriteLine();
35 36 Console.ReadLine();
37 } 38 } 39 }
For more information, check link below:
The Evolution of Delegates in C# in MSDN
No comments:
Post a Comment