Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
-52 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 144
1

Программа с использованием делегатов, анонимных методов и лямбда-выражений

16.01.2019, 20:45. Просмотров 1317. Ответов 4
Метки нет (Все метки)


помогите с кодом программы. условие программы: с использованием делегата следующего вида delegate int имя (int a, int b). создать приложение в котором будут выполнятся арифметические выражения над двумя переменными. в проэкте должно быть 4-5 методов которые будут вызывать выше приведенные делегаты.
я не могу сделать такую программу на си шарп. нужен код.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2019, 20:45
Ответы с готовыми решениями:

Дебаггинг анонимных методов и лямбда-выражений
Добрый вечер. Написал свой первый более-менее серьезный и полезный проект на C# и уперся в...

В чем разница лямбда-выражений и анонимных методов?
В книге Шидта приводится два способа создания анонимных функций: 1) с использованием ключевого...

Разница лямбда выражения, делегата (\анонимного делегата), методом (\анонимных методов)
Всё просто: В чём отличия: лямбд, делегатов, анонимных делегатов, методов, анонимных методов? ...

Вычисление значений выражений с использованием делегатов
Вычислить значение функции f(x), для введенного пользователем х. ∑a_i – это сумма всех целых...

4
88 / 76 / 38
Регистрация: 11.10.2015
Сообщений: 835
19.01.2019, 14:28 2
Так что ли?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
internal class Program
{
    delegate int MyOperation(int i, int j);
 
    // Вот вам методы
 
    static int Sum(int x, int y)
    {
        return x + y;
    }
 
    static int Mul(int x, int y)
    {
        return x * y;
    }
 
    static int Devide(int x, int y)
    {
        return x / y;
    }
 
    private static void Main(string[] args)
    {
        // Создаем делегат и суем в него наш метод
        MyOperation myOperation = Sum;
 
        int result = myOperation(2, 2);
        Console.WriteLine("Сумма: " + result);
 
        // Поменяем ссылку, и подставим в делегать 
        // метод для произведения
        myOperation = Mul;
        result = myOperation(2, 2);
        Console.WriteLine("Произведение: " + result);
// и так далее ссылки меняй, и подставляй необходимый метод
        Console.ReadKey();
    }
}
Блин, на гуголе навалом таких примеров.
0
-52 / 0 / 0
Регистрация: 01.11.2018
Сообщений: 144
20.01.2019, 13:26  [ТС] 3
извините. что значит менять ссылки? как их менять? не получается у меня
0
1318 / 776 / 289
Регистрация: 17.05.2015
Сообщений: 2,984
20.01.2019, 13:34 4
Цитата Сообщение от Anton124 Посмотреть сообщение
извините. что значит менять ссылки?
C#
1
MyOperation myOperation = Sum;
C#
1
myOperation = Mul;
0
88 / 76 / 38
Регистрация: 11.10.2015
Сообщений: 835
20.01.2019, 15:57 5
Цитата Сообщение от Anton124 Посмотреть сообщение
извините. что значит менять ссылки?
Почитайте, что такое объект в C#, ссылочные типы и оператор new! Ну и что такое делегат, и как его применить. Если программировали на С++, то это примерно тоже самое, что и указатель на функцию. Вы в делегат можете в качестве аргументов передавать метод, а не только переменные.

Добавлено через 26 секунд
Цитата Сообщение от Anton124 Посмотреть сообщение
не получается у меня
Не получается что? Скопировать мой пример и запустить в студии?

Добавлено через 40 минут
Вот, держи.
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
 
namespace ConsoleApp1
{
    internal class Program
    {
        private delegate int MyOperation(int x, int y);
 
        // Вот вам методы
 
        private static int Sum(int x, int y)
        {
            return x + y;
        }
 
        private static int Mul(int x, int y)
        {
            return x * y;
        }
 
        private static int Devide(int x, int y)
        {
            return x / y;
        }
 
        private static void Main(string[] args)
        {
            // Создаем делегат и суем в него наш метод
            MyOperation myOperation = Sum;
 
            int result = myOperation(2, 2);
            Console.WriteLine($"Сумма: {result}");
 
            // Поменяем ссылку, и подставим в делегат
            // метод для произведения
            myOperation = Mul;
            result = myOperation(2, 2);
            Console.WriteLine($"Произведение: {result}");
            // Анонимный метод
            myOperation = delegate (int x, int y) { return x % y; };
            Console.WriteLine($"Остаток от деления: {myOperation(16, 4)}");
            // Лямбда выражение
            myOperation = (x, y) => x + y;
            Console.WriteLine($"Сумма: {myOperation(2, 2)}");
            // Короче говоря, присваивая делегату разные методы,
            // тем самым ты меняешь ссылку и соответственно вызываешь
            // исполнение необходимого метода.
            Console.ReadKey();
        }
    }
}

И почитай, о том, что я выше написал.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2019, 15:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Оптимизация анонимных делегатов
Здравствуйте. У меня есть класс, в котором есть делегат Del и его поле Del Stats, в котором...

Использование анонимных методов
Анонимные методы используются, когда нужно создать метод для обработки какого-то события и больше...

Использование анонимных методов внутри цикла foreach
Добрый день, у меня возникла любопытная ситуация, поведение которой я не знаю как объяснить. В...

Почему локальные переменные методов нельзя изменять в анонимных классах?
Почему Java защищает от изменения локальные переменные методов, когда пытаешься их изменить в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.