使用模式比對以避免 'is' 檢查後面接著轉換 (IDE0020 和 IDE0038)

本文說明兩個相關規則和 IDE0020IDE0038

屬性
規則識別碼 IDE0020
標題 使用模式比對以避免 is 檢查後面接著轉換 (含變數)
類別 樣式
子類別 語言規則 (模式比對喜好設定)
適用語言 C#
選項 csharp_style_pattern_matching_over_is_with_cast_check
屬性
規則識別碼 IDE0038
標題 使用模式比對以避免 is 檢查後面接著轉換 (不含變數)
類別 樣式
子類別 語言規則 (模式比對喜好設定)
適用語言 C#
選項 csharp_style_pattern_matching_over_is_with_cast_check

概觀

此樣式規則涉及使用 C# 模式比對,例如 o is int i,在 is 檢查後面接著轉換,例如 if (o is int) { ... (int)o ... }IDE0020根據轉換表示式是否應該儲存至個別局部變數,啟用 或 IDE0038

  • 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

屬性 數值 Description
選項名稱 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

如需詳細資訊,請參閱 如何隱藏程式代碼分析警告

另請參閱