| 財産 | 価値 |
|---|---|
| ルール識別子 | 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
詳細については、「 コード分析の警告を抑制する方法」を参照してください。
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET