'System.HashCode.Combine' を使用する (IDE0070)

プロパティ
ルール ID IDE0070
Title System.HashCode.Combine を使用します
カテゴリ スタイル
Subcategory 言語規則 (式レベル基本設定)
該当言語 C# および Visual Basic

概要

この規則では、カスタム ハッシュ コード計算ロジックを使用する代わりに、System.HashCode.Combine メソッドを使用してハッシュ コードを計算することを推奨します。

オプション

この規則には、関連付けられているコード スタイル オプションはありません。

class B
{
    public override int GetHashCode() => 0;
}

class C : B
{
    int j;

    // Code with violations
    public override int GetHashCode()
    {
        // IDE0070: GetHashCode can be simplified.
        var hashCode = 339610899;
        hashCode = hashCode * -1521134295 + base.GetHashCode();
        hashCode = hashCode * -1521134295 + j.GetHashCode();
        return hashCode;
    }

    // Fixed code
    public override int GetHashCode()
    {
        return System.HashCode.Combine(base.GetHashCode(), j);
    }
}

警告を抑制する

単一の違反だけを抑制する場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則を再度有効にします。

#pragma warning disable IDE0070
// The code that's violating the rule is on this line.
#pragma warning restore IDE0070

ファイル、フォルダー、またはプロジェクトのルールを無効にするには、構成ファイルでその重要度を none に設定します。

[*.{cs,vb}]
dotnet_diagnostic.IDE0070.severity = none

すべてのコード スタイル規則を無効にするには、構成ファイルでカテゴリ Style の重要度を none に設定します。

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

詳細については、「コード分析の警告を抑制する方法」を参照してください。

関連項目