Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 23.07.2018, 10:32   #1
Мaкс
Форумчанин
 
Аватар для Мaкс
 
Регистрация: 12.06.2018
Адрес: Научная столица России.
Сообщений: 399
Репутация: -5
Вопрос Как сделать так, что бы не выводилась строка лямбда выражения события?

Помогите, пожалуйста, как сделать так, что бы после:
Код:

ob.Show(2);

Не выводилась ещё одна строка:
Код:

ob.Event += (x) => Console.WriteLine("Ok2. " + x + ".");

Что нужно написать, что бы был такой результат программы:
"Ok. 10.
Ok2. 10.
Ok. 20.
Ok2. 20.
Ok. 80."
Обратите внимание, что строка "Ok2. 80." не выводится! Что бы предотвратить это не помогла строка
Код:

ob.Event -= (x) => Console.WriteLine("Ok2. " + x + ".");

после:
Код:

ob.Show(2);

. Код программы:
Код:

using System;
delegate void De(int x);
class Program
{
    event De Event;

    static void Act()
    {
        Console.WriteLine("Act.");
    }

    void Show(int x)
    {
        if (Event != null)
            Event(x * 10);
    }

    static void Main()
    {
        Program ob = new Program();

        ob.Event += (x) => Console.WriteLine("Ok. " + x + ".");
        ob.Event += (x) => Console.WriteLine("Ok2. " + x + ".");

        ob.Show(1);
        ob.Show(2);
        ob.Event -= (x) => Console.WriteLine("Ok2. " + x + ".");


        ob.Show(8);

        Console.ReadKey(true);
    }
}

Спасибо за помощь!
Мaкс вне форума   Ответить с цитированием
Старый 23.07.2018, 13:16   #2
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,639
Репутация: 3613
По умолчанию

Код:

var l2 = (x) => Console.WriteLine("Ok2. " + x + ".");
ob.Event += l2;
...
ob.Event -= l2;

__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 23.07.2018, 13:43   #3
Мaкс
Форумчанин
 
Аватар для Мaкс
 
Регистрация: 12.06.2018
Адрес: Научная столица России.
Сообщений: 399
Репутация: -5
По умолчанию

Спасибо!
Мaкс вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Как сделать, чтобы выводилась одна строка с ответом после матрицы: Ярослав777 Помощь студентам 12 01.11.2017 20:18
[C#] Как сделать что бы не каждая строка выводилась, а только одно значение weqw121 Помощь студентам 1 20.10.2017 09:26
Как сделать так,что бы при введение,например 0;0 выдавалось сообщение,что точка находится на границе? TEIROP Visual C++ 4 08.11.2015 21:19
События и лямбда-выражения Devdev12 Общие вопросы .NET 2 11.09.2013 14:32
Сделать так, чтобы в DBGrid выводилась таблица Excel Илюха БД в Delphi 10 06.05.2010 15:59


02:19.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru