Я вижу все большее использование типов делегатов, предлагаемых в пространстве имен System (Action<T>
; Predicate<T>
и т. Д.).Поскольку это делегаты, я понимаю, что их следует использовать там, где мы традиционно использовали делегатов в прошлом (асинхронные вызовы; запуск потоков, обработка событий и т. Д.).Является ли это просто предпочтением или считается практикой использовать эти типы делегатов в сценариях, таких как ниже;вместо того чтобы использовать вызовы методов, которые мы объявили (или анонимные методы):
public void MyMethod()
{
Action<string> action = delegate(string userName
{
try
{
XmlDocument profile = DataHelper.GetProfile(userName);
UpdateMember(profile);
}
catch (Exception exception)
{
if (_log.IsErrorEnabled) _log.ErrorFormat(exception.Message);
throw (exception);
}
};
GetUsers().ForEach(action);
}
Сначала я обнаружил, что код менее интуитивно понятен, чем использование объявленных или анонимных методов.Я начинаю кодировать таким образом, и мне интересно, что вы думаете об этом.В приведенном выше примере все внутри метода.Это злоупотребление делегатом?