コード検査: 'GetHashCode()' で参照される非読み取り専用型メンバー
GetHashCode()
メソッドのマイクロソフトのドキュメントでは、このメソッドのオーバーライドによってオブジェクトの存続期間中に変更されない値が返されることが明示的に要求されていません。特に、言う:
オブジェクトの GetHashCode メソッドは、オブジェクトの Equals メソッドの戻り値を決定するオブジェクト状態への変更がない限り、常に同じハッシュコードを返す必要があります。
一方、オブジェクトがコレクション内にあるときは、少なくともハッシュコードは変更しないでください:
不変の参照型の GetHashCode をオーバーライドできます。一般に、可変参照型の場合、次の場合にのみ GetHashCode をオーバーライドする必要があります。
変更できないフィールドからハッシュコードを計算できます。または
オブジェクトがそのハッシュコードに依存するコレクションに含まれている間、可変オブジェクトのハッシュコードが変更されないようにすることができます。
しかし、そもそも GetHashCode()
をオーバーライドする必要があるのはなぜですか? 通常、オブジェクトが Hashtable
でディクショナリのキーとして使用される場合などに実行します。オブジェクトがコレクションに追加される時期とその期間を予測するのは非常に困難です。そこに保管した。
安全な側にいたい場合は、GetHashCode()
のオーバーライドがオブジェクトの存続期間中に同じ値を返すことを確認してください。JetBrains Rider は、GetHashCode()
の実装で非読み取り専用フィールドまたは非取得専用プロパティを指すことで、ここでお手伝いします。可能な場合、JetBrains Rider はクイックフィックスにこれらのメンバーを読み取り専用 / 取得専用にするよう提案します。
関連ページ:
![](https://resources.jetbrains.com/help/img/rider/2024.1/code_analysis_target_framework.png)
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、JetBrains Rider はサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかにかかわらず、コードインスペクションを特定の範囲でいつでも実行できます。「鉛筆」ウィジェットを使用して、エディターから直接インスペクション設定をすばやく調整するか、設定でより詳細な構成を行うことができます。を押すか、メニューから(W...
![](https://pleiades.io/icons/rider.png)
コードの問題のクイックフィックス
JetBrains Rider を使用すると、設計時に検出されたほとんどのコード問題を即座に修復できます。ハイライトされたコードの問題でを押して、問題を解決したり最適以下のコードを改善したりするための適切な方法を選択するのと同じくらい簡単です。クイックフィックスの適用:クイックフィックスは、ハイライトされたコードの問題の左側にアクションインジケーターとして視覚的に表示されます。これらのインジケーターは、コードの問題にキャレットを置くと表示されます。次のインジケーターは、簡単な修正を意味する