Якщо ви ще не готові занурюватися в глибини функціонального програмування (можливості якого чудово описані тут) або просто шукаєте максимально простий спосіб передати одну функцію у вигляді аргументу в іншу функцію, вам ідеально підійде делегат Action
Що це взагалі таке і навіщо це може знадобитися? Зазвичай функція отримує у вигляді вхідних параметрів, вони ж аргументи, тільки дані або конкретні класи. Потім вона щось з ними робить і в разі вдалого розташування зірок може навіть повернути якісь результати своєї роботи викликає коду. Зазвичай в таку функцію виносяться повторюють шматки коду, що виконують операції над даними. Але повторюватися можуть і шматки куди, що включають в себе виклик різних функцій за певною схемою.
Чому б не винести такий шматок коду в ще одну функцію, передавати в неї різні функції за участю яких треба виконати повторювані операції як вхідний параметр або один з вхідних параметрів? Стандартний підхід C # має на увазі створення спеціального опису цієї функції - делегата. Але в простих випадках можна використовувати стандартне опис-делегат Action
Однією з типових задач C # розробника є виконання запитів до бази даних. Щоб виконати запит до бази за допомогою OleDb треба як мінімум створити і відкрити з'єднання, створити об'єкт команди OleDbCommand. При цьому з'єднання з базою може розірватися в процесі роботи і простого способу перевірити його стан немає - то є найнадійніше заново створювати і відкривати / закривати його кожен раз. Для автоматизації подібної рутини можна написати ось таку функцію з використанням Action
Після чого в іншому місці ми можемо використовувати оголосити функцію на кшталт
І викликати її в такий спосіб
І повторити це в багатьох місцях з купою функцій
делегат Action
Навігація по публікаціям
а як же параметри функції someDatabaseFunction.
Делегат Action предзназначен для використання з не повертають значень void- функціями і має кілька варіантів з різною кількістю параметрів аж до 10. Якщо треба все-таки повернути значення, можна використовувати стандартний делегат Func або написати свій власний.
Ось що мені було потрібно. Дякуємо.