2

多くの異なるデータメンバーを含むデータ型 PlayerStats があります。データ メンバーごとに異なるスコアを計算したい (以下のケースでは、statistics.nrOfGoals を調べます)。

private double getScore()
{
    double strength = 0;
    foreach (PlayerStats statistics in this.statistics)
    {
        double dateDiff = Math.Abs(nowDate.Subtract(statistics.date).Days / (365.25 / 12));
        dateDiff = Math.Pow(dateDiff, Form1.historyFactor);

        strength += (statistics.nrOfGoals * ValueTable.PointsPerGoals   ) / dateDiff;
    }

    return strength;
}

この関数を一般的なものにして、似たような関数をたくさん作成する代わりに、どのデータメンバーを見るかを受け入れるにはどうすればよいですか?

何かのようなもの

private double getScore(Type type, Type type2)
{
    double strength = 0;
    foreach (PlayerStats statistics in this.statistics)
    {
        double dateDiff = Math.Abs(nowDate.Subtract(statistics.date).Days / (365.25 / 12));
        dateDiff = Math.Pow(dateDiff, Form1.historyFactor);

        strength += (statistics.type * ValueTable.type2) / dateDiff;
    }

    return strength;
}
4

3 に答える 3