2005年03月23日

配列の比較(3)

  
前々回の記事で、ArrayComp関数を載せましたが、さらに汎用化することもできます。

private bool CollectionComp(IEnumerable enumerable1, IEnumerable enumerable2) {
IEnumerator e1 = enumerable1.GetEnumerator();
IEnumerator e2 = enumerable2.GetEnumerator();
while ( e1.MoveNext() ) {
if ( !e2.MoveNext() )
return false;
object o1 = e1.Current;
object o2 = e2.Current;
if ( !o1.Equals(o2) )
return false;
}
return !e2.MoveNext();
}


このように記述しておけば、IEnumerableを実装しているクラスならば、配列だろうと、ArrayListだろうと何でも比較できます。

でも、このような関数って、C#の場合、どういったクラスに入れるべきなんだろう。Utils クラスのstaticメソッドなのだろうか。あんまり美しくないな。


 

この記事へのトラックバックURL