using System; using System.Collections.Generic; using System.Text; namespace delegate_encapsulate { // #1 declare a delegate /* * use the keyword delegate * name the method you will be encapsulating * and its return type */ // start a new class with curlies class mydelegales { public delegate void delegate_a_method(string str); // delegates first or constructor first // for the class constructor will be the first one to evoked public mydelegales() { Console.WriteLine("Constructor evoked"); } ~mydelegales() { Console.WriteLine("Destructor evoked"); } //create a method with delegate public static void process_request(string input) { string received = input; Console.WriteLine("hello, user you entered : " + received); } } class test { [STAThread] 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 //(mydelegales.process_request); mydelegales.delegate_a_method d_a_m = new mydelegales.delegate_a_method(mydelegales.process_request); Console.Write(" Enter something :"); string str = Console.ReadLine(); // #3 invoke a call through a delegate object d_a_m(str); Console.ReadLine(); } } } |
step 1: Entering the Main() |
Step 2 accessing the method |
Step 3: Enter somethiing
|
Step 4 : entered my name
|
Step 5:
delegate is rolling |
Step 6: delegates checks the method that will print out what ever you
enter at the prompt. Note input holds the name I entered earlier
|
Step 7: Intially string received was null and then acquires the name from another variable of same type that is "input" |
Step 9 |
step 10: Coming back to delegate
|
step 12: Job done ready to quit
|
No instances and no need of cleaning the abject; although delegates are
in a class, it works on its own space and did not evoke constructor (since
there is no instances/object created, constructor was not summoned. To
review an example of using delegate as a function that will be traverse
through an object, please follow the link.Link
|