0

関数があるとします

public float GetOBJECTActivity(OBJECT ob){

   // returns some float
}

List<OBJECT>別の関数内で、関数の結果に従って並べ替えたいOBJECT ( ) のリストを取得しますGetOBJECTActivity(降順または昇順)。

C#で最適なパフォーマンスを得るにはどうすればよいですか? 私は自分のプロジェクトで同様の操作を頻繁に行う予定であり、最速の方法と最もエレガントな方法を確実に使用したいと考えています。

ありがとう

4

2 に答える 2

0

Comparerを作成し、その比較子を List.Sort() で使用ます

リストをソートする最も速くてエレガントな方法は、組み込み関数を使用することです。

多くの型 (浮動小数点数、文字列、整数) には比較子が組み込まれているため、それらが使用する唯一の型であることがわかっている場合は、呼び出すだけで済みます。List.Sort()

于 2012-07-16T22:16:07.847 に答える
0
static int MyActivityComparison(OBJECT a, OBJECT b)
{
    float x = GetOBJECTActivity(a);
    float y = GetOBJECTActivity(b);

    // ascending
    return x.CompareTo(y);

    // descending
    // return y.CompareTo(x);
}

list.Sort(MyActivityComparison);

または、スタンドアロン関数を定義したくない場合は、ラムダ式を使用します。

list.Sort((a, b) =>
    {
        float x = GetOBJECTActivity(a);
        float y = GetOBJECTActivity(b);
        return x.CompareTo(y);     // ascending
        // return y.CompareTo(x);  // descending
    });
于 2012-07-16T22:20:58.350 に答える