使用模式比對以避免 'is' 檢查後面接著轉換 (IDE0020 和 IDE0038)
本文說明兩個相關規則和 IDE0020
IDE0038
。
屬性 | 值 |
---|---|
規則識別碼 | 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
如需詳細資訊,請參閱 如何隱藏程式代碼分析警告。