Простий спосіб передати функцію як аргумент в c # - делегат action - t, записна книжка

Якщо ви ще не готові занурюватися в глибини функціонального програмування (можливості якого чудово описані тут) або просто шукаєте максимально простий спосіб передати одну функцію у вигляді аргументу в іншу функцію, вам ідеально підійде делегат Action .

Що це взагалі таке і навіщо це може знадобитися? Зазвичай функція отримує у вигляді вхідних параметрів, вони ж аргументи, тільки дані або конкретні класи. Потім вона щось з ними робить і в разі вдалого розташування зірок може навіть повернути якісь результати своєї роботи викликає коду. Зазвичай в таку функцію виносяться повторюють шматки коду, що виконують операції над даними. Але повторюватися можуть і шматки куди, що включають в себе виклик різних функцій за певною схемою.

Чому б не винести такий шматок коду в ще одну функцію, передавати в неї різні функції за участю яких треба виконати повторювані операції як вхідний параметр або один з вхідних параметрів? Стандартний підхід C # має на увазі створення спеціального опису цієї функції - делегата. Але в простих випадках можна використовувати стандартне опис-делегат Action.

Однією з типових задач C # розробника є виконання запитів до бази даних. Щоб виконати запит до бази за допомогою OleDb треба як мінімум створити і відкрити з'єднання, створити об'єкт команди OleDbCommand. При цьому з'єднання з базою може розірватися в процесі роботи і простого способу перевірити його стан немає - то є найнадійніше заново створювати і відкривати / закривати його кожен раз. Для автоматизації подібної рутини можна написати ось таку функцію з використанням Action

Після чого в іншому місці ми можемо використовувати оголосити функцію на кшталт

І викликати її в такий спосіб

І повторити це в багатьох місцях з купою функцій

делегат Action предзназначен для використання з не повертають значень void- функціями і має кілька варіантів з різною кількістю параметрів аж до 10. Якщо треба все-таки повернути значення, можна використовувати стандартний делегат Func або написати свій власний.

Навігація по публікаціям

а як же параметри функції someDatabaseFunction.

Делегат Action предзназначен для використання з не повертають значень void- функціями і має кілька варіантів з різною кількістю параметрів аж до 10. Якщо треба все-таки повернути значення, можна використовувати стандартний делегат Func або написати свій власний.

Ось що мені було потрібно. Дякуємо.