ReSharper 2026.1 Help

コードインスペクション: 型チェックとキャストをまとめることができます

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

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

  • 理由もなく型チェックを繰り返しており、ループ内で行うとパフォーマンスに影響を及ぼす可能性があります。

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

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

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

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

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 } }
2026 年 6 月 12 日