TIPS自作クラスによる配列をソート(並べ替え)するには?デジタルアドバンテージ2004/10/15「TIPS:配列を独自の順序でソート(並べ替え)するには?」では、IComparerインターフェイス(System.Collections名前空間)を実装したクラスを用意することで、文字列配列のソートを行った。この方法では、任意のクラスのオブジェクトからなる配列も、独自の順序でソートすることができる。次のようなWordクラスがあるとしよう(C#の場合。VB.NETについては以下のサンプル・プログラムを参照)。}}このクラスの配列を、そのメンバである文字列「data」の長さによりソートするには、「TIPS:配列を独自の順序でソート(並べ替え)するには?」で解説している方法により、次のようにして行うことができる。wordsort1.vbIComparerインターフェイスを実装したクラスによりWordクラスの配列をソートするVB.NETのサンプル・プログラム(wordsort1.vb)wordsort1.vbのダウンロード自作クラスのオブジェクトからなる配列をソートするには、このようなIComparerインターフェイスを用いた方法に加え、IComparableインターフェイス(System名前空間)を用いた方法でも可能だ。次にこれについて解説する。IComparableインターフェイスのCompareToメソッド「TIPS:配列を独自の順序でソート(並べ替え)するには?」の最後で解説しているように、パラメータとして配列のみを指定するArray.Sortメソッドは、最終的には指定された配列の要素に対してCompareToメソッドを呼び出すことにより、2つの要素の大小を比較して並べ替えを行う。このCompareToメソッドを定義しているのがIComparableインターフェイスである。IComparableインターフェイスのCompareToメソッドのシグネチャは次のようになっている(以下はC#による定義)。obj)「Array.Sort(配列)」の実行は、配列内のある要素に対して、このCompareToメソッドを呼び出す。このとき、比較対象となる配列内の別の要素がパラメータとして渡される。CompareToメソッドは、IComparerインターフェイスのCompareメソッドと同様に、比較結果により負の値、0、正の値のいずれかを戻り値として返さなければならない。自作クラスにIComparableインターフェイスを実装し、CompareToメソッドを定義しておけば、そのクラスのオブジェクトの配列は「Array.Sort(配列)」の呼び出しによりソートできるというわけである。前掲のTIPSでも述べているように、ほとんどの数値型や文字列型(Stringクラス)は、このIComparableインターフェイスを実装している。IComparableインターフェイスを実装したソート可能なクラス冒頭で示したWordクラスにIComparableインターフェイスを実装し、そのメンバである文字列「data」の長さにより、その配列をソートするサンプル・プログラムを次に示す。wordsort2.vbIComparableインターフェイスを実装したWordクラスの配列をソートするVB.NETのサンプル・プログラム(wordsort2.vb)wordsort2.vbのダウンロードこのプログラムで示しているように、CompareToメソッドでは、そのインスタンス自身(C#では「this」、VB.NETでは「Me」により参照可能)とパラメータで渡された別のインスタンスとの比較を行うことになる。ここではArrayクラスのSortメソッドについて取り上げたが、可変長の配列として利用できるArrayListクラス(System.Collections名前空間)のSortメソッドも、各要素のIComparableインターフェイス実装を利用してソートを行う(実際には、その内部でArray.Sortメソッドを使ってソートを行っている)。より自動抽出したものです。7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。TranslatorはPowerPoint用のアドイン。