リストの並べ替えに関するチュートリアルを読んでいて、このコード行に出くわしました
myGenericList.Sort((x, y) => String.Compare(x.name, y.name));
これを調べてみましたが、この行がわかりません。この行で何が起こっているのかを正確に説明できる人はいますか?
ここにを作成してanonymous
function
います。
は、2 つのfunction
Sort
引数x
とy
が提供される Action デリゲートを取ります。の実装は、function
「=>
goes to」と読みます。次に、String.Compare(x.name, y.name)
提供された引数を使用して実行されます。の戻り値はString.Compare
関数の結果であり、これは関数のソート順の決定にも使用されます。List
代理人Sort
が必要な過負荷があります。Comparison<>
lammbda式は、一致するデリゲート型に変換可能であり、それが機能する理由です。
詳細については、MSDNのドキュメントで比較<>を参照してください。
今後の.NET4.5(Visual Studio 2012)では、IComparer<>
から非常に簡単に作成できるようになりますComparison<>
。これは、新しい静的な「ファクトリ」メソッドによるものComparer<>.Create
です。
基本的には、myGenericList の 2 つの要素 (x & y) を並べ替えるには、x & y のプロパティ「name」で String.Compare を使用します。