[解決済み] ReSharperのGetHashCodeのオーバーライドに'397'が使用されているのはなぜですか?
2022-04-25 22:58:33
質問
多くの方と同じように、私も開発のスピードアップのためにReSharperを使用しています。ReSharperを使ってクラスの等式メンバをオーバーライドすると、ReSharperが生成するコードジェンには
GetHashCode()
のようになります。
public override int GetHashCode()
{
unchecked
{
int result = (Key != null ? Key.GetHashCode() : 0);
result = (result * 397) ^ (EditableProperty != null ? EditableProperty.GetHashCode() : 0);
result = (result * 397) ^ ObjectId;
return result;
}
}
もちろん自分のメンバーも入っていますが、私が知りたいのは、なぜ397なのか、ということです。
- 編集部:私の質問は、397という素数には、素数であること以外に何か「特別な」ことがあるのでしょうか?
解き方は?
おそらく397は、結果変数がオーバーフローしてハッシュのビットが多少混ざり、ハッシュコードの分布がよくなるのに十分な大きさの素数であるためと思われます。397には、同じ大きさの他の素数と区別するような特別な点は何もありません。
関連
-
[解決済み] Java の String の hashCode() では、なぜ 31 が乗数として使われるのですか?
-
[解決済み] node.jsのハッシュ文字列?
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み】ReSharperが「暗黙のうちに捕捉されたクロージャ」と言うのはなぜ?
-
[解決済み】MD5ハッシュを復号化することは可能ですか?
-
[解決済み】ハッシュとレンジの主キーとは?
-
[解決済み】ReSharperが警告を出す。"汎用型の静的フィールド"
-
[解決済み】ResharperのAlt Enterキーが効かない
-
[解決済み] ReSharper略語集。どこで修正できますか?
-
[解決済み] ReSharperの好奇心。「パラメータは前提条件のチェックにのみ使用されます。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】弱い抵抗と強い抵抗の違いとは?
-
[解決済み] MurmurHash - それは何ですか?
-
[解決済み] SHA-256 javascriptの実装で、一般に信頼できるとされるものはありますか?
-
[解決済み] トレントファイルの info_Hash とは一体何でしょうか?
-
[解決済み] node.jsのハッシュ文字列?
-
[解決済み】MD5ハッシュを復号化することは可能ですか?
-
[解決済み] パスワードの暗号化:ベストプラクティス?[クローズド]。
-
[解決済み] MD5はファイルを一意に識別するのに十分な性能を持っていますか?
-
[解決済み] MD5/SHA1よりもCRCの方が適切な場合とは?
-
[解決済み] MD5ハッシュの計算は、SHAファミリー関数よりもCPU負荷が低いですか?