using System; using System.Collections.Generic; using System.Text; namespace delegate_function { class mydelegates { public delegate void DAM(string str); // delegates first or constructor first // for the class constructor will be the first one to evoked public mydelegates() { Console.WriteLine("Constructor evoked"); } ~mydelegates() { Console.WriteLine("Destructor evoked"); } //create a method with delegate public void process_request(DAM input) { if (input !=null) { input("Checked in Manas "); Console.WriteLine(" First Process done : "); } if (input != null) { DateTime showtime = DateTime.Now; input("Today is "); Console.WriteLine(" Second Process done { 0:m } : " + showtime ); } } public static void call_process(string s) { if (s == "Manas") { Console.WriteLine(" You have admin right : " + s); } else { Console.WriteLine(" Thanks for visiting " + s); } } } class test { static void admin(string ns) { Console.WriteLine(ns); } static void Main(string[] args) { // #2 implement a delegate with new key word just line a class //what is different? //a class holds a delegate/pointer to a method encapsulated //stay idle till called by a method in that external class. //since it is static method, you need to call like this //(mydelegates.call_process); mydelegates myd = new mydelegates(); mydelegates.DAM d_a_m = new mydelegates.DAM(mydelegates.call_process); mydelegates.DAM dd = new mydelegates.DAM(admin); Console.Write(" Admin's call : "); myd.process_request(admin); Console.Write(" Enter something : "); string str = Console.ReadLine(); // #3 invoke a call through a delegate object d_a_m(str); Console.Write(" Hit Enter to Quit : "); Console.ReadLine(); } } } |
Step 1:
|
Step 2: shows the object with the namespace
|
Step 3: Object created and constructor evoked
|
Step 3: Checking on delegates
|
Step 4: Now checking on another object derived from delegate |
Step 5 Evaluationg a method with delegate in an external class |
Step 6: Note carefully that cursor returns to the
output-location of that is, "admin" a static method.
Now as the line was processed, you would see the out put
|
Step 7:
|
Step 8: very similar fashion the second logical statement
was processsed
|
Step 9: Below shows the completion of delegating a call to admin |
Step 10: now you are entering another instance of the
delegate where you are sending a string to a method
|
step 11
|
step 12 The input is being delegated to a method that take care of the input |
step 13: entering the if logical statement, since it is a
match we will see a print out of "You Have-----"
|
Step 14
|
step 15: Completing the delegation and back reporting to the object d_a_m |
step 16:
|
Below shows the outputs, when you are using .Net Frame work 2. 0 SDK; The last line "Destructor Evoked" would not be seen with Visual Studio 2005 IDE. |