1

リストの並べ替えに関するチュートリアルを読んでいて、このコード行に出くわしました

myGenericList.Sort((x, y) => String.Compare(x.name, y.name));

これを調べてみましたが、この行がわかりません。この行で何が起こっているのかを正確に説明できる人はいますか?

4

3 に答える 3

6

ここにを作成してanonymous functionいます。

は、2 つのfunction Sort引数xyが提供される Action デリゲートを取ります。の実装は、function=>goes to」と読みます。次に、String.Compare(x.name, y.name)提供された引数を使用して実行されます。の戻り値はString.Compare関数の結果であり、これは関数のソート順の決定にも使用されます。List

于 2012-08-06T17:29:05.747 に答える
3

代理人Sortが必要な過負荷があります。Comparison<>lammbda式は、一致するデリゲート型に変換可能であり、それが機能する理由です。

詳細については、MSDNのドキュメントで比較<>を参照してください。

今後の.NET4.5(Visual Studio 2012)では、IComparer<>から非常に簡単に作成できるようになりますComparison<>。これは、新しい静的な「ファクトリ」メソッドによるものComparer<>.Createです。

于 2012-08-06T17:36:36.757 に答える
2

基本的には、myGenericList の 2 つの要素 (x & y) を並べ替えるには、x & y のプロパティ「name」で String.Compare を使用します。

于 2012-08-06T17:28:58.063 に答える