次の方法で共有


パターン マッチングを使用して ’is’ チェックの後にキャストが発生しないようにする (IDE0020 および IDE0038)

この記事では、IDE0020IDE0038 という 2 つの関連するルールについて説明します。

プロパティ
ルール ID IDE0020
タイトル パターン マッチングを使用して、is チェックの後にキャスト (変数を含む) が発生しないようにする
カテゴリ スタイル
Subcategory 言語規則 (パターン マッチング設定)
該当言語 C#
[オプション] csharp_style_pattern_matching_over_is_with_cast_check
プロパティ
ルール ID IDE0038
タイトル パターン マッチングを使用して、is チェックの後にキャスト (変数を含まない) が発生しないようにする
カテゴリ スタイル
Subcategory 言語規則 (パターン マッチング設定)
該当言語 C#
[オプション] csharp_style_pattern_matching_over_is_with_cast_check

概要

このスタイル規則は、C# のパターン マッチングの使用 (例: o is int i) と、is チェックの後のキャストの使用 (例: if (o is int) { ... (int)o ... }) に関するものです。 キャスト式を別のローカル変数に保存する必要があるかどうかに基づいて、IDE0020IDE0038 のいずれかを有効にします。

  • IDE0020: キャスト式はローカル変数に保存され "ます"。 たとえば、if (o is int) { var i = (int)o; } では、(int)o の結果がローカル変数に保存されます。
  • IDE0038: キャスト式はローカル変数に保存され "ません"。 たとえば、if (o is int) { if ((int)o == 1) { ... } } では、(int)o の結果はローカル変数に保存されません。

オプション

この規則に関連付けられているオプションの値を設定して、パターン マッチングと is チェックの後の型キャストのどちらを使用するかを指定します。

オプションの構成の詳細については、「オプションの書式」を参照してください。

csharp_style_pattern_matching_over_is_with_cast_check

プロパティ 説明
オプション名 csharp_style_pattern_matching_over_is_with_cast_check
オプションの値 true is 式と型キャストの代わりにパターン マッチングを使用します。
false ルールを無効にします。
既定のオプションの値 true
// csharp_style_pattern_matching_over_is_with_cast_check = true
if (o is int i) {...}

// csharp_style_pattern_matching_over_is_with_cast_check = false
if (o is int) {var i = (int)o; ... }

警告を抑制する

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

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

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

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

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

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

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

関連項目