Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Основне використання делегатів у C# - обробка подій.Содержание книги
Поиск на нашем сайте Багато класів стандартної бібліотеки.Net Framework використовують делегати для повідомлення про події, що сталися в них. Відповідно, розробники середовища.NET визнали, що буде доцільно ввести загальний стандартний тип делегат, який використовуватиметься у всій бібліотеці. Його прототип представлений нижче.
Цей делегат приймає всього лише два параметри, що явно замало для універсального делегата. Але все таки виявляється, цих параметрів вистачає для передачі будь-якої інформації. Сам по собі клас EventArgs не містить жодного члена, здатного передавати яку б то не було інформацію. Він введений лише для узагальнення. Коли необхідно передати додаткову інформацію, вводиться новий клас, похідний від EventArgs, в якому вже і вводяться поля, які передають необхідну інформацію. У одній загальній бібліотеці у класу EventArgs 100 нащадків, і їх кількість від версії до версії середовища виконання неухильно зростає. При зверненні до події, що має тип даного делегата, як параметр необхідно передати посилання на поточний об'єкт (this), а в другому параметрі екземпляр класу EventArgs або похідного від нього.
де властивість Empty просто повертає порожній екземпляр типу EventArgs. В принципі, його можна створити і самому скориставшись оператором new.
Приклад Програма для генерації варіантів тестів. Використовуються стандартые делегати.
Одні і ті самі дії можна виконати при натисненні кнопки, вибором пункту меню або кнопки панелі інструментів. Наприклад, генерація варіантів (програмна кнопка).
private void btmGentest_Click(object sender, EventArgs e) { //кнопка Button – фрагмент коди DateTime Date; //дата з календаря у форматі DateTime //Знімаємо дані з полів форми string Disc = txtDisc.Text; //Дисциплина string Teacher = comboBox1.Text; //Преподаватель try { if (Disc.Length == 0) { throw new Exception("Введіть назву дисципліни"); } if (Teacher.Length == 0) { throw new Exception("Введіть прізвище викладача"); } Date = monthCalendar1.SelectionRange.Start; //дата, вибрана на календарі. За умовчанням, поточна дата string strDate = Date.ToString(); //преобразование дати в рядок int numberVariant = (int)numericUpDown1.Value; //к-во варіантів завдань.
} --------------------------- ---------------------------------- private void toolStripButton1_Click(object sender, EventArgs e) { //кнопка панелі інструментів Генерувати - делегат події btmGentest_Click btmGentest_Click(this, new EventArgs()); } --------- ------------------- ------------------------------
private void генеруватиToolStripMenuItem1_Click(object sender, EventArgs e) { //меню Генеруваті //кнопка генерації - делегат події btmGentest_Click btmGentest_Click(this, new EventArgs()); }
Лямбда-вирази і лямбда-функції Функціональне програмування базується на лямбда численні, яке запропоноване Алонзо Черчем. Вікипедія дає таке визначення: Лямбда-числення (исчисление, лямбда-числення) — формальна система, розроблена американським математиком Алонзо Черчем, для формалізації і аналізу поняття обчислюваності. лямбда-числення може розглядатися як сімейство прототипних мов програмування. Їх основна особливість полягає в тому, що вони є мовами вищих порядків. Тим самим забезпечується систематичний підхід до дослідження операторів, аргументами яких можуть бути інші оператори, а значенням також може бути оператор. Мови в цьому сімействі є функціональними, оскільки вони базуються на уявленні про функцію або оператор, включаючи функціональну аплікацію і функціональну абстракцію.
Базисом функціонального програмування є лямбда вирази і анонімні функції.
|
|||||
|
Последнее изменение этой страницы: 2017-02-21; просмотров: 372; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.214 (0.008 с.) |