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
|