Mega Code Archive

 
Categories / C# / Language Basics
 

Demonstrate using a static delegate without declaring an instance of the class

/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // StaticDl.cs -- Demonstrate using a static delegate without declaring //                an instance of the class. // //                Compile this program with the following command line: //                    C:>csc StaticDl.cs using System; namespace nsDelegates {     public class StaticDl     {         public delegate void StringHandler (string str);         static public StringHandler DoString;         static public void Main ()         { // Create a delegate in this class             DoString = new StringHandler (ShowString);             DoString ("Static delegate called"); // // Show that the static constructor in another class is shared by instances             clsDelegate.DoMath = new clsDelegate.MathHandler (SquareRoot);             clsDelegate dlg1 = new clsDelegate (49);             clsDelegate dlg2 = new clsDelegate (3.14159);         } // The method used with the string delegate         static private void ShowString (string str)         {             Console.WriteLine (str);         } // The method used with the double delegate         static private double SquareRoot (double val)         {             double result = Math.Sqrt (val);             Console.WriteLine ("The square root of " + val + " is " + result);             return (result);         }     }     class clsDelegate     {         public delegate double MathHandler (double val);         static public MathHandler DoMath; // The constructor invokes the delegate if it is not null.         public clsDelegate (double val)         {             value = val;             if (DoMath != null)                 sqrt = DoMath (value);         }         double value;         double sqrt = 0;     } }