Question:
Why should I use delegates?How to use a delegate?
Answer:
In C# methods are not first order objects.
You cannot pass a method as an argument to another method, or store them in a list, or give it to someone to call your back.
So, if you want to pass a method around like an object you must create a delegate. That delegate encapsulates both an object instance and your method.
In C#, a delegate is a type that defines a method signature. For different method signatures you need different delegate types.
Event handlers are nothing more than methods that are invoked through delegates.
Here is an example
// the delegate takes one argument of type string and returns a string.
public delegate string ChangeString(string s);
public void RunSample()
{
List<string> myList = new List<string> { "One", "Two", "Three" };
DoForAll(myList, ToUpper);
Console.WriteLine("----");
DoForAll(myList, ToLower);
Console.ReadLine();
}
// For all items in a list we want to do something (here we pass the method delegate
private void DoForAll(List<string> sList, ChangeString func)
{
foreach (string s in sList)
{
Console.WriteLine( func(s) );
}
}
private string ToUpper(string s)
{
return s.ToUpperInvariant();
}
private string ToLower(string s)
{
return s.ToLowerInvariant();
}
...
No comments:
Post a Comment