Делегаты против действия, Func в С#
Это может показаться глупым вопросом, но это просто ради любопытства.
У нас есть два определенных уже определенных делегата в С#:
Действие инкапсулирует любой метод "void", который принимает 0 или более параметров.
Func инкапсулирует любой метод, который возвращает определенный тип значения и принимает 0 или более параметров.
Мой вопрос: в каких случаях рекомендуется определить пользовательский делегат?
Зачем вам это нужно?
Спасибо заранее
Ответы
Ответ 1
Ни один из типов Func
или Action
не позволяет использовать параметры out
или ref
, поэтому вам нужно будет определить своих собственных делегатов, если вам нужно использовать их, например:
public delegate bool TryParse<T>(string s, out T value);
Ответ 2
В тысячах случаев вам нужно будет ссылаться/указывать на функцию (следовательно, делегат, если фактическая реализация функции будет меняться во время выполнения, кроме подписи), которая не соответствует ни одному из заданных делегатов. Скажем,
Открытый делегат T MyDel (T t, U u, V v);