Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 327; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.27.225 (0.008 с.) |