Ответ 1
Пока это не слишком запутывает, в этом нет ничего плохого.
У меня часто есть фрагмент кода, который повторяется.
Обычно я помещаю их в функцию, но иногда мне это не нравится, потому что:
Итак, чтобы имитировать код Inline, отсутствующий в С#, я использую делегаты Action:
public void Display(DateTime from, DateTime to)
{
var start = from.ToOADate();
var end = to.ToOADate();
[...]
// This Action delegate helps me not to repeat the code.
var removePoints = new Action<Series>(serie =>
{
var pointsToRemove = serie.Points.Where(pt => pt.XValue < start || pt.XValue > end).ToArray();
foreach (var pt in pointsToRemove)
serie.Points.Remove(pt);
});
removePoints(FlameTemperatureSerie);
removePoints(BoshGasFlowRateSerie);
removePoints(PercCOSerie);
removePoints(PercH2Serie);
[...]
}
Это очень полезно, особенно потому, что контекст выполнения делегата Action может использовать локальные переменные.
Мне кажется хорошо, но я никогда не видел нигде делегатов Action, которые использовали этот путь. Вот почему я хотел бы знать, можно ли рекомендовать эту практику или если это может вызвать проблемы, о которых я не знаю.
Пока это не слишком запутывает, в этом нет ничего плохого.
Совершенно допустимо иметь функцию, которая вызывается только один раз, если она упрощает чтение и обслуживание кода.