Подтвердить что ты не робот

Делегаты против действия, Func в С#

Это может показаться глупым вопросом, но это просто ради любопытства.

У нас есть два определенных уже определенных делегата в С#:

Действие инкапсулирует любой метод "void", который принимает 0 или более параметров.
Func инкапсулирует любой метод, который возвращает определенный тип значения и принимает 0 или более параметров.

Мой вопрос: в каких случаях рекомендуется определить пользовательский делегат?
Зачем вам это нужно?

Спасибо заранее

4b9b3361

Ответ 1

Ни один из типов Func или Action не позволяет использовать параметры out или ref, поэтому вам нужно будет определить своих собственных делегатов, если вам нужно использовать их, например:

public delegate bool TryParse<T>(string s, out T value);

Ответ 2

В тысячах случаев вам нужно будет ссылаться/указывать на функцию (следовательно, делегат, если фактическая реализация функции будет меняться во время выполнения, кроме подписи), которая не соответствует ни одному из заданных делегатов. Скажем,

Открытый делегат T MyDel (T t, U u, V v);