ReSharper 2026.1 Help

Null チェック

ReSharper オプション: コード編集 | C# | null チェック

このページを使用して、例外およびアサーションの null チェックルーチンの生成をカスタマイズします。

null は例外とアサーションをチェックする

null 参照であるオブジェクトに遭遇することがプログラムで重大であり、例外をスローすることによってログに記録されるか、シグナルが通知される状況があります。 ここでの典型的な例は、 null オブジェクトを受け入れるように設計されていない関数に ArgumentNullException を投げることです。

例外とアサーションの null チェックを生成する

これらの種類の null チェックは、次の方法で生成できます。

  • パラメーターまたは式上で Alt+Enter を押し、対応する コンテキストアクションを選択します:

    ReSharper: null のパラメーターを確認しています
  • パラメーターが [NotNull] 属性でマークされている場合、パラメーター名またはパラメーター型の直後にキャレットを置き、 ! を押してください:

    private void Foo([NotNull] object/*!*/ arg/*!*/)
  • コンストラクターを生成するAlt+Insert| コンストラクター )場合は、ダイアログで null のパラメーターを確認する を選択してください。

  • 任意の null 許容式に対して null のアサーションを生成するには、ReSharper で null の式をアサートする アクションを Alt+Enter 上で利用できます。 null 許容性分析の設定に応じて、 クイックフィックスまたは コンテキストアクションとして表示されます。

    ReSharper: null 式の宣言

    このアクションは、ReSharper が式が決して null にならないと推定した場合は使用できません。

コードアノテーションをプロジェクトで利用する場合、ReSharper は null チェックを行うパラメーターに [NotNull] 属性を付与します。 これにより、装飾されたパラメーターに null オブジェクトが渡された際に ReSharper が通知します。

ReSharper オプション の コードインスペクション | コードアノテーション ページで アノテーションを自動的に伝播する チェックボックスをオフにすることで、 [NotNull] の追加を無効化できます。 Alt+R、O

例外とアサーションの null チェックの設定

この種類の null チェックは複数の書き方が可能なため、ReSharper オプション の コード編集 | C# | null チェック ページで設定ができます。また、該当アクションの Alt+Enter メニューからもアクセスできます: Alt+R、O

ReSharper: null チェックパターンを設定するためのショートカット

このオプションページには、事前定義されたすべての null チェックパターンが優先度順に一覧表示され、優先度の高いパターンが上部に表示されます。 ReSharper が null チェックを生成する際は、現在の C# バージョンを考慮し、文脈に最も意味的に適した最優先パターンが使われます。

ReSharper は、プロジェクトファイル *.csproj で指定された C# バージョンを自動的に検出して使用します。

バージョンを変更するには、エディターでプロジェクトファイルを開き、 <LangVersion> 属性を変更します。

ソリューション内のすべてのプロジェクトの C# バージョンを設定するには、ソリューションディレクトリ内の Directory.Build.props ファイルで指定し、 こちらに記載の手順に従います。 .csproj ファイルで定義された言語バージョンは、 Directory.Build.props ファイルで指定されたバージョンを上書きすることに注意してください。

例: デフォルト構成では、「throw expression」パターン $EXPR$ ?? new System.ArgumentNullException($NAME$); は「classic」throw ステートメント if ($EXPR$ == null) throw new System.ArgumentNullException($NAME$); よりも高い優先度を持ちます。 ただし、現在のコンテキストで式が許可されていない場合、ReSharper は最初のものをスキップし、2 番目のパターンを使用します:

// Press Alt+Enter on 'arg' and choose 'Check parameter for null' private void Foo(object arg) { // as expression is not allowed here, the statement is generated: if (arg == null) throw new ArgumentNullException(nameof(arg)); } // However, in the following case the expression is already there private object myField; private void Foo(object arg) { myField = arg; } // so ReSharper will use the first pattern: private object myField; private void Foo(object arg) { myField = arg ?? throw new ArgumentNullException(nameof(arg)); }

アサーション生成にも同様に適用されます。ReSharper は アサーションに使用できる が付与された最初のパターンを使用します。

null チェックの生成で希望がある場合は、オプション ページの 上へ移動 Alt+U(ショートカット) /下へ移動 Alt+D(ショートカット) ボタンを使い、希望するパターンの優先度を上げてください。

例外とアサーションのカスタム null チェックの作成

コードベースで null チェックを処理するための専用ヘルパーメソッドがある場合は、オプション ページで太字でハイライトされている 2 つのカスタムパターン(カスタム (ステートメント)カスタム (式) )を編集し、独自の null チェックパターンを作成できます:

ReSharper: null チェックのカスタムパターン

デフォルトでは、これら2つのパターンは最も優先度が低いので、生成時に使用されることはありません。 これらを使用したい場合は、優先度を上げるために順番を上に移動してください。

リストでカスタムパターンを選択すると、 $EXPR$$NAME$$MESSAGE$ プレースホルダーを使用してページ下部のテキストフィールドで編集できます。 パターンが有効である限り、ReSharper はテキストフィールド下部に対応するアイコンを表示します。

アサーションに使用できる チェックボックスをオンにして、パターンを null の式をアサートする アクションで機能させることもできます。

2026 年 6 月 12 日