static void Main(string[] args) { int i1 = 3; int i2 = 2; MultiplyOrDivideMethod("Divide: ", i1, i2, Divide); MultiplyOrDivideMethod("Multiply: ", i1, i2, Multiply); MultiplyOrDivide pm1 = new MultiplyOrDivide(Multiply); MultiplyOrDivideMethod("Создание экземпляра делегата на основе метода: ", i1, i2, pm1); MultiplyOrDivide pm2 = Multiply; MultiplyOrDivideMethod("Создание экземпляра делегата на основе 'предположения' делегата: ", i1, i2, pm2); MultiplyOrDivide pm3 = delegate(int param1, int param2) { return(param1 * param2); }; MultiplyOrDivideMethod("Создание экземпляра делегата на основе анонимного метода: ", i1, i2, pm3); MultiplyOrDivide pm4 = (int x, int y) => { int z = x * y; return(z); }; MultiplyOrDivideMethod("Создание экземпляра делегата на основе лямбда-выражения в виде переменной: ", i1, i2, pm4); int outer = 100; MultiplyOrDivide pm5 = (int x, int y) => { int z = x + y + outer; return(z); }; MultiplyOrDivideMethod("Создание экземпляра делегата на основе лямбда-выражения : ", i1, i2, (int x, int y) => { int z = x * y; return(z); } ); Console.WriteLine("Использвоание обобщенного делегата Func <>"); MultiplyOrDivideMethodFunc("Создание экземпляра делегата на основе метода: ", i1, i2, Multiply); Console.WriteLine("Пример группового делегата"); Action <int, int> a1 = (x, y) => { Console.WriteLine("{0} * {1} = {2}", x, y, x * y); }; Action <int, int> a2 = (x, y) => { Console.WriteLine("{0} / {1} = {2}", x, y, x / y); }; Action <int, int> group = a1 + a2; group(5, 3); }
static void Main(string[] args) { Console.WriteLine("Лабораторная работа 6 - 'Работа с делегатами'"); Console.Title = "Выполнил:Ли М.В. Группа:ИУ5-34Б"; string str1; string str2; Console.Write("Введите первый аргумент: "); str1 = Console.ReadLine(); Console.Write("Введите второй аргумент: "); str2 = Console.ReadLine(); while (str2 == "0") { Console.Write("Введите второй аргумент повторно (неравный нулю): "); str2 = Console.ReadLine(); } int i1 = int.Parse(str1); int i2 = int.Parse(str2); Console.WriteLine("\nПример группового делегата"); MultiplyOrDivideMethod("Умножаем: ", i1, i2, Multiply); MultiplyOrDivideMethod("Делим: ", i1, i2, Devide); MultiplyOrDivide p1 = new MultiplyOrDivide(Multiply); MultiplyOrDivide p2 = new MultiplyOrDivide(Devide); MultiplyOrDivideMethod("\nMultiply: ", i1, i2, Multiply); MultiplyOrDivideMethod("Devide:", i1, i2, Devide); MultiplyOrDivideMethod("Создание экземпляра делегата на основе лямбда-выражения: ", i1, i2, (x, y) => x * y); Console.WriteLine("\n\nИспользование обощенного делегата Func< >"); MultiplyOrDivideMethodFunc("Создание экземпляра делегата на основе метода: ", i1, i2, Multiply); MultiplyOrDivideMethodFunc("Создание экземпляра делегата на основе лямбда-выражения: ", i1, i2, (x, y) => x * y); Console.ReadKey(); }
static void MultiplyOrDivideMethodFunc(string str, int i1, int i2, MultiplyOrDivide MultiplyOrDivideParam) { int result = MultiplyOrDivideParam(i1, i2); Console.WriteLine(str + result.ToString()); }
static void MultiplyOrDivideMethod(string str, int i1, int i2, MultiplyOrDivide MultiplyOrDivideParam) { double Result = MultiplyOrDivideParam(i1, i2); Console.WriteLine(str + Result.ToString()); }