これはVB.NETです。someDictionary.ContainsKey(someDictionary.Keys.First)...はFalseですか?
タイトルに記載されている式がFalseを返す原因が考えられますか?私は確信して
もの:
- 辞書のキーがあります。
等価比較子は、各キーに対して異なるハッシュコードを返し、そのハッシュコードは常に同じ入力に対して同じです。- someDictionary.Keys.Firstとキーに相当する新しく構築されたオブジェクトを比較すると、Trueが返されます。
- someDictionary.Comparer.Equals(someDictionary.Keys.First、newObjectThatIsEquivalentToFirstKey)はTrueを返します。
someDictionary.Keys.First.GetHashCodeは常に同じ値を返します(複数のプログラム実行であっても)。繰り返し再作成された同等のオブジェクトでGetHashCodeを呼び出すと、GetHashCodeが呼び出されません。問題のオブジェクトは本質的に単なる4つ組のboolであり、ハッシュコードは新しいBitArray(新しいBoolean {}(obj.First、obj.Second、obj.Third、obj.Fourth))です。GetHashCode- UPDATE:一つのスレッドだけ
更新:。。。どうやら、そのハッシュコードの実装は、常に同じ値を返しません。私はこれが問題であれば、診断しようとします
。明らかにSometHingはありましたが、それは私のコードではありませんでした。それはBitArrayにあった。とにかく情報をありがとう。これは参考に便利です。 –