Может ли кто-нибудь рассказать мне о преимуществах использования делегата по сравнению с вызовом самой функции, как показано ниже (или, другими словами, почему стоит выбрать вариант A вместо варианта B)?Вчера вечером я просматривал чей-то код linq, и у него было что-то похожее на вариант А. Но он использовался для возврата скомпилированного запроса 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);
}
}
************ РЕДАКТИРОВАТЬ ************
Не уверен, что это лучше объясняет мой вопрос, ноВот пример типа кода, который изначально заставил меня задуматься об этом:
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);
}
Есть ли какое-либо преимущество при написании такой функции?