我经常有一些片的一个重复的代码。
通常情况下,我把它们放在一个功能,但有时我讨厌这样做是因为:
- 它需要太多的参数
- 该代码通常是非常具体的,以整体的一小部分。 所以,我终于有那些只在一个地方使用两个或三个功能。
所以,来模拟从C#缺少内嵌代码,我用行动代表:
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委托执行上下文可以使用局部变量。
我似乎对我好,但我从来没有看见无处行动代表使用这种方式。 这就是为什么我想知道,如果这种做法可建议,或者如果强权导致的问题我不知道。