コード例 #1
0
        public static void DelegateComposition()
        {
            var sum      = new AddMultNumbers(DelegatesExamples.AddNumbers);
            var multiply = new AddMultNumbers(DelegatesExamples.MultiplyNumbers);

            var addMult = sum + multiply;

            foreach (AddMultNumbers item in addMult.GetInvocationList())
            {
                item(8, 5);
            }

            Console.WriteLine("Result: {0}", addMult(5, 7));


            addMult = (AddMultNumbers)Delegate.Remove(addMult, multiply);
            Console.WriteLine("After removing multiply method.");
            addMult(10, 5);
            addMult = (AddMultNumbers)Delegate.RemoveAll(addMult, sum);
            Console.WriteLine("After removing all sum methods");

            if (addMult == null)
            {
                Console.WriteLine("Now delegate is not pointing to any method.");
            }
        }
コード例 #2
0
        public static void EventToAddMultiplyExample()
        {
            var sum      = new AddMultNumbers <int>(DelegatesExamples.AddNumbers);
            var multiply = new AddMultNumbers <int>(DelegatesExamples.MultiplyNumbers);

            EventToAddMultiply += sum; //adding delegate instance to the event
            EventToAddMultiply += multiply;

            //Methods fired: AddNumbers, MultiplyNumbers are also known as event handlers
            EventToAddMultiply(5, 8);//firing the event
        }
コード例 #3
0
        public static void AddMultiplyNumbers()
        {
            var            Sum      = new AddMultNumbers(DelegatesExamples.AddNumbers);
            AddMultNumbers Multiply = DelegatesExamples.MultiplyNumbers;

            var num1 = 5;
            var num2 = 8;

            Console.WriteLine("Sum of {0} and {1} is: {2}", num1, num2, Sum(num1, num2));
            Console.WriteLine("Product of {0} and {1} is: {2}", num1, num2, Multiply(num1, num2));
        }
コード例 #4
0
        public static void AnonymousMethodExample()
        {
            AddMultNumbers <int> sum = delegate(int a, int b)
            {
                var addition = a + b;
                Console.WriteLine("Sum of {0} and {1} is: {2}", a, b, addition);
                return(addition);
            };

            var result = sum(45, 75);

            Console.WriteLine("Result: {0}", result);
        }
コード例 #5
0
        public static void GenericAddMultiplyExample()
        {
            AddMultNumbers <int>   sumInt   = DelegatesExamples.AddNumbers;
            AddMultNumbers <float> sumFloat = DelegatesExamples.AddNumbers;

            AddMultNumbers <int>   multiplyInt   = DelegatesExamples.MultiplyNumbers;
            AddMultNumbers <float> multiplyFloat = DelegatesExamples.MultiplyNumbers;

            AddMultNumbers <int, float> trgArea = DelegatesExamples.CaculateTriangleArea;

            sumInt(5, 6);
            sumFloat(5.5F, 6.8F);

            multiplyInt(5, 6);
            multiplyFloat(5.5F, 6.50F);
            trgArea(5, 7);
        }
コード例 #6
0
        public static void MulticastDelegateExample()
        {
            AddMultNumbers addMult = DelegatesExamples.AddNumbers;

            addMult += DelegatesExamples.MultiplyNumbers;

            //iterate over invocation list
            foreach (var item in addMult.GetInvocationList())
            {
                var d = ((AddMultNumbers)item);

                var n1 = 5;
                var n2 = 6;
                Console.WriteLine("\nMethod: {0}", d.Method);
                Console.WriteLine("Result of {0} and {1}: {2}", n1, n2, d(5, 6));

                if (d.Method.Name == "AddNumbers")
                {
                    Console.WriteLine("This is '{0}' Method.", d.Method.Name);
                }
                else if (d.Method.Name == "MultiplyNumbers")
                {
                    Console.WriteLine("This is '{0}' Method.", d.Method.Name);
                }
            }

            Console.WriteLine("\n\nMultiplication of {0} and {1} is: {2}", 5, 10, addMult(5, 10));

            addMult -= DelegatesExamples.MultiplyNumbers;
            Console.WriteLine("Sum of {0} and {1} is: {2}", 5, 10, addMult(5, 10));

            addMult -= DelegatesExamples.AddNumbers;

            if (addMult == null)
            {
                Console.WriteLine("\n\nDelegate is not pointing to any method.");
            }
        }