編集: これはサンプルプログラムです。linqに合計演算子があることを理解しています。ただし、必ずしもこの加算アルゴリズムではなく、ポインターをプロパティに渡して複雑なことを行う方法について具体的に尋ねようとしていました。
次のようなクラスがあるとしましょう。
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 を実行するように定義された数値かを伝えることができることを知っています。これが通常の関数である場合、私はデリゲートを使用できるとしますが、これはプロパティであるため、どのように変換されるかわかりません。
では、これらの関数を次のようなものに組み合わせるにはどうすればよいですか。
double bothFunctions(List<Point> PointList, var propertyToUse)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.propertyToUse;
}
return sum;
}
propertyToUse は、X または Y のいずれかを指します。