Каждый раз, когда мне нужен очень маленький метод, который использует только его параметры...
Должен ли я использовать объявление делегата или метод?
Например: умножьте три числа
Func<int, int, int, int> Multiply = (a,b,c) => a*b*c;
и
int Multiply(int a, int b, int c)
{
return a*b*c;
}
Edit:
Я хочу сфокусировать этот вопрос с точки зрения эффективности при компиляции и удобочитаемости.
Я бы не объявил делегата, а не метод только ради него. Если вы просто хотите называть это непосредственно из другого кода в своем классе, метод более идиоматичен. Если вам не нужно использовать какие-либо переменные экземпляра, вы можете сделать это статическим методом, чтобы сделать это понятным.
С другой стороны, если вам нужно когда-либо использовать его в качестве делегата, используйте выражение лямбда для создания этого делегата (согласно вашему первому примеру).
Если вы хотите вызвать его напрямую и использовать его в качестве делегата, вы можете использовать преобразование группы методов для создания делегата легко:
int d = Multiply(a, b, c); // Normal method invocation
DoSomethingWithFunction(values, Multiply); // Method group conversion
use a lambda expression to create that delegate
... что именно вы имеете в виду? Я не использую это?
Объявить частную статическую функцию, если она использует только свои собственные параметры. Объявив его статическим, вы прямо скажете будущему читателю вашего кода (возможно, через несколько месяцев), что он практически не зависит от класса, в котором он определен.
Lambdas и анонимные методы могут использоваться как обработчики событий (помните, что они могут вызвать утечку памяти при неправильном использовании), когда он очищает их действия и, более того, они обычно не будут повторно использоваться.