明示的なキャストを追加する (IDE0221)

財産 価値
ルール識別子 IDE0221
タイトル 明示的なキャストを追加する
カテゴリ Style
サブカテゴリー 言語ルール (表現レベルの設定)
該当する言語 C#
[オプション] dotnet_style_prefer_non_hidden_explicit_cast_in_source

概要

この規則は、コンパイラが追加の非表示の明示的キャストを挿入するソース コード内の明示的なキャストにフラグを設定します。 表示キャストと非表示キャストは、実行時にさまざまな理由で失敗する可能性があります。 この規則でこのようなコードにフラグを設定する場合は、コードの意図を明確にするために、ソースに中間キャストを明示的に追加することをお勧めします。

たとえば、(Derived)xが 2 つの明示的な変換 (最初は基本型、次に派生型) を必要とする型であるxを記述する場合、ソースには 1 つのキャストのみが表示されます。 コンパイラは、中間キャストをソースに示さずに挿入します。 このルールでは、両方のキャストを明示的に記述することを推奨しています。(Derived)(Base)x

オプション

オプションでは、ルールを適用する動作を指定します。 オプションの構成については、「 オプションの形式」を参照してください。

dotnet_style_prefer_non_hidden_explicit_cast_in_source (ソースコードで非隠しの明示的キャストを好むスタイル)

財産 価値 説明
オプション名 dotnet_style_prefer_non_hidden_explicit_cast_in_source
オプション値 true すべての中間明示的キャストをソース コードで表示することを好みます。
false すべての中間明示的キャストをソース コードで表示することを好まない。
既定のオプション値 true

class Base { }
class Derived : Base { }

class Castable
{
    public static explicit operator Base(Castable c) => new Base();
}

class C
{
    void M()
    {
        // Code with violation: the compiler inserts a hidden (Base) cast.
        var v = (Derived)new Castable();

        // Fixed code: both casts are explicit in source.
        var v2 = (Derived)(Base)new Castable();
    }
}

警告を抑制する

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

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

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

[*.cs]
dotnet_diagnostic.IDE0221.severity = none

すべてのコード スタイル規則を無効にするには、Styleでカテゴリ none の重要度を に設定してください。

[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none

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

こちらも参照ください