2011-02-09 6 views
1

ハローに等しいですハッシュテーブルの等しいメソッドですが、処理されません。ハッシュテーブルA iが試み</p> <p>.. C#の でiはキー/値のペアが同じ であり、iは、二つハッシュテーブルのキー/値のペアが等しいかどうかを確認したい2つのハッシュテーブルオブジェクトを持ってハッシュテーブルB制御

foreachですべての項目をチェックする必要がありますか?

おかげ

答えて

3

あなたがしたいのは、組合をとり、サイズがカウントと同じかどうかを確認することです。あなたは設定の違いを行うことができますが、あなたは両方の方法でそれをやらなければならないでしょう。これらは簡単にLINQの拡張メソッドで行うことができますが、ハッシュテーブルを使用しているので、あなたはキャストを使用する必要があります()のIEnumerableにそれを得るために:

 var table1 = new Hashtable {{"A", 1}, {"B", 2}, {"C", 3}}; 
     var table2 = new Hashtable {{"B", 2}, {"A", 1}, {"C", 3}}; 

     bool same = table1.Cast<DictionaryEntry>().Union(table2.Cast<DictionaryEntry>()).Count() == table1.Count; 

     Console.WriteLine("Same = " + same); 

私は一般的に、型の安全性を得るために、ハッシュテーブルの上に辞書をお勧めしますが、キャスト<>()では、古いHashtableで見つかるLinqのものを使用できます。

3

私は、ハッシュテーブルの同じ方法を試みたが、これはハッシュテーブルに2つの参照が同じであるかどうかを確認するために、参照の比較を行います

を働いていません。それはあなたが望むものではありません。

shoul foreachですべてのアイテムをチェックしますか?

はい。 2つのハッシュテーブルが同じ数の項目を持ち、最初のもののすべてのキーと値のペアが2番目のハッシュテーブルにあることを確認します。

+0

両方向を確認する必要はありますか?両方のハッシュテーブルのキー数が同じであること、および最初のハッシュテーブルのすべてが2番目にあり、キーと値のペアが等しいことを検証するだけでは不十分ですか? –

+0

@Joel Rondeau:そうです。 – jason

関連する問題