/// <summary> /// The delegate can points to multiple methods. /// A delegate that points multiple methods is called a multicast delegate. /// The "+" operator adds a function to the delegate object and /// the "-" operator removes an existing function from a delegate object. /// </summary> public List <int> MulticastDelegate() { List <int> result = new List <int>(); ReturnVals returnDel = ReturnNumber; returnDel += ReturnHexadecimal; returnDel += ReturnMoney; result.Add(returnDel(1)); returnDel -= ReturnHexadecimal; result.Add(returnDel(2)); return(result); }
/// <summary> /// This function invokes the delegate called Print. /// </summary> public List <int> DelegateInvoke() { List <int> result = new List <int>(); // Print delegate points to PrintNumber ReturnVals returnDel = ReturnNumber; // or // Print returnDel = new Print(PrintNumber); result.Add(returnDel(1)); //direct invoke result.Add(returnDel.Invoke(2)); //invoking using Invoke // Print delegate points to PrintMoney returnDel = ReturnMoney; result.Add(returnDel(3)); result.Add(returnDel.Invoke(4)); return(result); }
/// <summary> /// A method can have a parameter of a delegate type and can invoke the delegate parameter. /// </summary> /// <param name="delegateFunc">parameter of a delegate type</param> /// <param name="numToPrint">int parameter passed to delegate</param> public static int HelperFunction(ReturnVals delegateFunc, int numToPrint) { return(delegateFunc(numToPrint)); }