リストの並べ替えに関するチュートリアルを読んでいて、このコード行に出くわしました
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 を使用します。