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."); } }
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 }
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)); }
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); }
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); }
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."); } }