Using Delegates


The Number 42 is even and it is not prime


Notes:

  1. Delegates are types used to invoke one or more methods where the actual method is invoked and determined at run time.
  2. Delegates also provide a way for programs to respond to asynchronous procedures.



Front end code

    8             <asp:Literal ID="litOutput" runat="server" />



Source Code.

    1 using System;

    2 using System.Data;

    3 using System.Configuration;

    4 using System.Collections;

    5 using System.Web;

    6 using System.Web.Security;

    7 using System.Web.UI;

    8 using System.Web.UI.WebControls;

    9 using System.Web.UI.WebControls.WebParts;

   10 using System.Web.UI.HtmlControls;

   11 namespace BicNet.Projects.mcp.chapter3

   12 {

   13     public partial class DelegatesAndEvents : System.Web.UI.Page

   14     {

   15         delegate bool MathDelegate(int x);

   16         protected void Page_Load(object sender, EventArgs e)

   17         {

   18             int MyNumber = 42;

   19             System.Text.StringBuilder sbOutput = new System.Text.StringBuilder();

   20             sbOutput.Append("<h2>Using Delegates</h2><hr />");

   21             sbOutput.Append("The Number " + MyNumber.ToString());

   22             //Call AboutNumber to invoke IsEven

   23             sbOutput.Append(AboutNumber(new MathDelegate(IsEven),MyNumber));

   24             sbOutput.Append(" even and it " );

   25             sbOutput.Append(AboutNumber(new MathDelegate(IsPrime),MyNumber));

   26             sbOutput.Append(" prime ");

   27             litOutput.Text = sbOutput.ToString();

   28         }

   29 

   30         private string AboutNumber(MathDelegate Func, int x)

   31         {

   32             if (Func(x))

   33                 return " is ";

   34             else

   35                 return " is not ";

   36         }

   37 

   38         //Invoked through the Math Delegate

   39         private bool IsEven(int x)

   40         {

   41             if (x % 2 == 0)

   42                 return true;

   43             else

   44                 return false;

   45         }

   46         //Invoked through the Math Delegate

   47         private bool IsPrime(int x)

   48         {

   49             for (int i = 2; i < (x / 2); i++)

   50             {

   51                 if (x % i == 0)

   52                 {

   53                     return false;

   54                 }

   55             }

   56             return true;

   57 

   58         }

   59 

   60     }

   61 

   62 }