JetBrains Rider 2024.1 ヘルプ

コード検査: 型チェックとキャストをマージできます

型テスト is 演算子は、古典的な形式(Expression is Type)で、Expression の実行時型が Type と互換性があり、Expression の結果が null でない場合にのみ true を返します。

次の例のように、キャストする前に is を使用して互換性を確認する場合、少なくとも 2 つの問題があります。

  • 理由もなく型チェックを 2 回行います。ループ内で行うとパフォーマンスに影響を与える可能性があります。

  • objnull の場合、プログラムの実行が if ステートメントに入らないという事実は、このコードを読んだ人にはすぐにはわかりません。

void Test(object obj) { if (obj is string) { string str = (string) obj; // do something } }

JetBrains Rider は、このコードを 2 つの異なる方法で修正することを提案しています。

パターンマッチング変数を使用する

C# 7.0 から始めて、is 演算子をよりエレガントに使用して、型テストと変数の初期化組み合わせることができます: Expression is Type variable これをこの例に適用すると、次のようになります。

void Test(object obj) { if (obj is string) { string str = (string) obj; // do something } }
void Test(object obj) { if (obj is string str) { // do something } }

独立した型のテストと null のチェック

as 演算子を使用したセーフキャストを使用してコードを書き直してから、null チェックを行うこともできます。このようにして、2 つではなく 1 つのキャストを作成し、関心の分離を改善します。

void Test(object obj) { if (obj is string) { string str = (string) obj; // do something } }
void Test(object obj) { var str = obj as string; if (str != null) { // do something } }

関連ページ:

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、JetBrains Rider はサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかにかかわらず、コードインスペクションを特定の範囲でいつでも実行できます。「鉛筆」ウィジェットを使用して、エディターから直接インスペクション設定をすばやく調整するか、設定でより詳細な構成を行うことができます。を押すか、メニューから(W...

コード検査: MVC (未知の見解)

このインスペクションは、文字列リテラルとしてメソッドに渡されたビューの名前がプロジェクト内の有効なビューアーイテムに対応しているかどうかを確認します。すべてのビュー項目は、Views プロジェクトディレクトリ内の .chtml ファイルとして定義されています。デフォルトでは、このインスペクションには「エラー」の重大度レベルがあります。これは、プロジェクトがコンパイルされたとしても、ビューが欠落しているとランタイムエラーが発生するためです。コード検査: ライブ...