假设我有一个 C# 类:
public class Node
{
public double A { get; set; }
public double B { get; set; }
}
...以及另一个包含该类型对象列表的类:
public Buffer
{
private List<Node> _nodes;
...
}
现在,假设我需要计算 _nodes 列表中 Node 对象的 A 值的总和。然后(单独)计算 B 的总和。有没有办法使用“通用”Sum() 方法来做到这一点,而不必复制代码?
例如,一种方法可能是:
public class Buffer
{
...
private double SumA()
{
double sum;
foreach (Node node in _nodes)
{
sum += node.A;
}
return sum;
}
private double SumB()
{
double sum;
foreach (Node node in _nodes)
{
sum += node.B;
}
return sum;
}
}
这里的问题是 SumA() 和 SumB() 实现的基本算法是相同的,但在上述情况下是重复的。如果 Node 具有更多需要求和的属性,或者 Sum() 是一个更复杂的过程(在我目前正在重构的情况下,这两者都是正确的),则情况会更加复杂。
所以用另一种方式提出这个问题,有没有一种方法可以让我拥有一个 Sum() 方法,但让它对列表中需要求和的类 Node 的任何成员进行操作?