编辑: 这是一个示例程序,我知道 linq 中有一个 sum 运算符。但是,我试图专门询问如何将指针传递给属性以对其进行复杂的处理,不一定是求和算法。
假设我有这样的课程:
class Point
{
double x {get; set;}
double y {get; set;}
}
在我的主程序中,我有 2 个功能。
double function1(List<Point> PointList)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.x;
}
return sum;
}
double function2(List<Point> PointList)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.y;
}
return sum;
}
这些函数完全相同,除了一个是对 X 值求和,另一个是对 Y 值求和。由于这些非常相似,我想将它们组合起来,以便我基本上传入那个点列表,以及一些东西来确定我想要进行基于 X 或 Y 的计算。
我知道我可以放入一个 switch 语句并根据枚举告诉它是 X 还是 Y,或者定义为告诉它执行 X 或 Y 的数字。如果这是一个正常的函数,我假设我可以使用 s 委托,但这是一个属性,所以我不确定它是如何翻译的。
那么我如何将这些功能组合成类似的东西:
double bothFunctions(List<Point> PointList, var propertyToUse)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.propertyToUse;
}
return sum;
}
其中 propertyToUse 指向 X 或 Y。