Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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));
        }