Может ли кто-нибудь сказать мне преимущества использования делегата, а не для вызова самой функции, как показано ниже (или, другими словами, зачем выбирать вариант A над вариантом B)? Я смотрел на кого-то код linq прошлой ночью, и у них было что-то похожее на вариант A, но оно использовалось для возврата скомпилированного запроса linq.
Я понимаю, что первая теперь может быть передана другим функциям.. просто не уверен в ее практичности. Кстати, я понимаю, что это не будет компилироваться как есть.. раскомментировала одну из функций перед публикацией. TYIA
class Program
{
static void Main(string[] args)
{
Console.WriteLine(SayTwoWords("Hello", "World"));
Console.ReadKey();
}
// Option A
private static Func<string, string, string>
SayTwoWords = (a, b) => String.Format("{0} {1}", a, b);
// Option B
private static string SayTwoWords(string a, string b)
{
return String.Format("{0} {1}", a, b);
}
}
************ ************ EDIT
Не уверен, что он лучше объясняет мой вопрос, но вот пример типа кода, который изначально заставлял меня думать об этом:
public static class clsCompiledQuery
{
public static Func<DataContext, string, IQueryable<clsCustomerEntity>>
getCustomers = CompiledQuery.Compile((DataContext db, string strCustCode)
=> from objCustomer in db.GetTable<clsCustomerEntity>()
where objCustomer.CustomerCode == strCustCode
select objCustomer);
}
Есть ли какое-либо преимущество в написании функции таким образом?