ReSharper 2025.3 ヘルプ

コード検査: '??' 条件が null または null でないことがわかっている

値を代入したり、引数を渡したり、識別子の NULL 可能性に基づいてメソッドから戻る場合は、これらの場合に使用できる最もわかりやすい構文は ?? (null-coalescing) 演算子です。

null 合体式は次のように動作します。最初に左側のオペランドが評価され、NULL の場合は右側のオペランドが評価され、結果が全体の式の結果になります。

ただし、冗長な NULL 合体式はデッドコードを生成し、読みやすさを妨げます。?? 演算子の論理からわかるように、null を右側のオペランドとして使用しても意味がありません。以下では、newCategory が null の場合は Category に null が代入されるため、ReSharper は右辺オペランド null?? 演算子と一緒に削除することをお勧めします。

public class Customer { public string Category { get; set; } private void ChangeCategory(string newCategory) { Category = newCategory ?? null; } /* … */ }
public class Customer { public string Category { get; set; } private void ChangeCategory(string newCategory) { Category = newCategory; } /* … */ }

NULL 合体演算子が冗長な場合のもう 1 つの状況は、左側のオペランドが NULL になることがない場合です。この場合、右側のオペランドに到達することはなく、ReSharper は到達不能コードを削除するよう提案します。

string name = "John"; Console.WriteLine(name ?? "empty");
string name = "John"; Console.WriteLine(name);
2024 年 4 月 08 日

関連ページ:

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

設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...

コード検査: 'nameof' 式を使用して、文字列リテラルの一部で名前を参照する

.NET ライブラリには、型、メンバー、または変数の名前を引数として受け入れるように設計された多くのメソッドがあります。最も一般的な例の 1 つはです。そのようなメソッドの引数として文字列リテラルを使用する場合、対応するシンボルの名前が変更されたときにリテラルのスペルが間違っているか変更されていない場合、エラーが発生する可能性があります。有効なシンボルに対応しない文字列リテラルは、コンパイラーによってキャッチされません。C# 6.0 で追加された nameof 演算子は、この問題に対処し、スコープ内...