Delegate the Work
page 2 of 4
by Stephen Rylander
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 22412/ 36
Article Contents:

Delegates

Delegates are useful to implement function pointers or callbacks. Here are the basics of a delegate:  Defining a delegate lets you invoke other functions that match the definition of the delegate.  Right – what does that mean?

First off, a delegate is really a class. It derives from System.Delegate (really, it could also derive from System.MulticastDelegate, but we’re trying to keep thing simple here).  So, you can define a delegate and then call it like a method.  See Listing 1.

Listing 1 – Define a delegate

Public delegate bool CookDinner(string MainCourse);

So, what does this get you?  First notice that the delegate looks like a method definition with a return type and method parameters.  That should feel pretty comfortable.  But, like I mentioned above, this is actually getting created as a class, so under the hood it is much more than a method. Now that we have this delegate defined we can use set it up for use.  See Listing 2.

Listing 2 – Setup the delegate

CookDinner cook = new CookDinner(CookingTacos);
 
Private bool CookingTacos(string Meat)
{
  if(Meat != “vegetable”)
   {return true;}
  else
   {return false;}
}

Note that when we initialize the instance of our delegate, CookDinner, with the variable cook we are passing in a method that matches the delegate’s definition to the constructor.  This is very important.  All it takes to instantiate an instance of the delegate is a logical pointer to a method.  Now take a look at Listing 3 and you’ll see how the delegate is used.

Listing 3 – Use the delegate

FeedTheFamily(cook);  //pass in the delegate
Private void FeedTheFamily(CookDinner cookIt)
{
  cookIt(“Beef”);
}

 

This helps us decouple a specific action from each method.  Here, we can pass in our delegate to FeedTheFamily and that method is then able to call the method we already defined.  So now if we decide that FeedTheFamily needs to cook something else, we change the method that is passed in the CookDinner constructor.


View Entire Article

User Comments

No comments posted yet.






Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-04-25 2:21:14 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search