delegate keyword c# code example

Example 1: c# delegate

// Declare a delegate type
public delegate double MyDelegateType(double x);

// Define some consummer that uses functions of the delegate type
public double Consummer(double x, MyDelegateType f){
    return f(x);
}


//...


// Define a function meant to be passed to the consummer 
// The only requirement is that it matches the signature of the delegate
public double MyFunctionMethod(double x){
    // Can add more complicated logic here
    return x;
}
// In practice now
public void Client(){
    double result = Consummer(1.234, x => x * 456.1234);
    double secondResult = Consummer(2.345, MyFunctionMethod);
}

Example 2: C# delegate

using System;

	public class CargoAircraft
    {
      	// Create a delegate type (no return no arguments)
        public delegate void CheckQuantity();
		// Create an instance of the delegate type
        public CheckQuantity ProcessQuantity;

        public void ProcessRequirements()
        {
          // Call the instance delegate
          // Will invoke all methods mapped
            ProcessQuantity();
        }
    }

    public class CargoCounter
    {
        public void CountQuantity() { }
    }

    class Program
    {
        static void Main(string[] args)
        {
            CargoAircraft cargo = new CargoAircraft();
            CargoCounter cargoCounter = new CargoCounter();
			
          	// Map a method to the created delegate
            cargo.ProcessQuantity += cargoCounter.CountQuantity;
          	
          	// Will call instance delegate invoking mapped methods
            cargo.ProcessRequirements();
        }
    }
}