コード検査: 型チェックとキャストをマージできます
型テスト is 演算子は、古典的な形式(Expression is Type
)で、Expression
の実行時型が Type
と互換性があり、Expression
の結果が null
でない場合にのみ true
を返します。
次の例のように、キャストする前に is
を使用して互換性を確認する場合、少なくとも 2 つの問題があります。
理由もなく型チェックを 2 回行います。ループ内で行うとパフォーマンスに影響を与える可能性があります。
obj
がnull
の場合、プログラムの実行がif
ステートメントに入らないという事実は、このコードを読んだ人にはすぐにはわかりません。
JetBrains Rider は、このコードを 2 つの異なる方法で修正することを提案しています。
パターンマッチング変数を使用する
C# 7.0 から始めて、is
演算子をよりエレガントに使用して、型テストと変数の初期化を組み合わせることができます: Expression is Type variable
これをこの例に適用すると、次のようになります。
独立した型のテストと null のチェック
as 演算子を使用したセーフキャストを使用してコードを書き直してから、null チェックを行うこともできます。このようにして、2 つではなく 1 つのキャストを作成し、関心の分離を改善します。
関連ページ:
コードインスペクション設定を構成する
設計時コードインスペクションを構成する:デフォルトでは、JetBrains Rider はサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかにかかわらず、コードインスペクションを特定の範囲でいつでも実行できます。「鉛筆」ウィジェットを使用して、エディターから直接インスペクション設定をすばやく調整するか、設定でより詳細な構成を行うことができます。を押すか、メニューから(W...
コード検査: MVC (未知の見解)
このインスペクションは、文字列リテラルとしてメソッドに渡されたビューの名前がプロジェクト内の有効なビューアーイテムに対応しているかどうかを確認します。すべてのビュー項目は、Views プロジェクトディレクトリ内の .chtml ファイルとして定義されています。デフォルトでは、このインスペクションには「エラー」の重大度レベルがあります。これは、プロジェクトがコンパイルされたとしても、ビューが欠落しているとランタイムエラーが発生するためです。コード検査: ライブ...