0

C#ではSqlHierarchyId、ハッシュコードから新しいものを作成することは可能ですか?Webページにツリービューを作成していますが、の文字列表現を渡すよりも、サーバーからクライアントにハッシュコードを渡すことができる方が少しきれいだと思いますSqlHierarchyIdSqlHierarchyIdSQLからをプルするSqlHierarchyId.GetHashCode()と、ハッシュコードを取得するために呼び出すことができますが、そのハッシュコードから新しいものを作成する方法がわかりませんSqlHierarchyId。どんな助けでもいただければ幸いです。

4

1 に答える 1

1

ハッシュをSqlHierarchyIdにマップして戻し、希望する動作を取得することはできません。ハッシュコードは一意であることを意味するものではなく、複数のSqlHierarchyIdが同じハッシュコードを返す場合があります。

ウィキペディアにハッシュの高レベルの説明があります。http://en.wikipedia.org/wiki/Hash_function。ページの最初の画像がハッシュ衝突を示していることに注意してください。

それを超えて、ハッシュは通常、一方向の操作として意図されています。SqlHierarchyIdには、逆方向に進むことができるメソッドはありません(そして、SqlHierarchyIdは独自の実装でGetHashCodeをオーバーライドします)。GetHashCodeの実装を見ても、SqlHierarchyIdの状態を再現できるようにする方法はありません。コードは、idとxor'ing値のバイナリ表現をループで一緒にループしています(逆方向に進むことはできません)。

于 2012-11-15T16:23:47.663 に答える