ReSharper 2026.1 Help

null チェックルーチンを生成する

ReSharper は、値型パラメーター、式、変数が null でないかをチェックするコードを生成するための多様な方法を提供しています。 目的に応じて、null チェックルーチンは 2 つのカテゴリに分けられます:

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 の式をアサートする アクションで機能させることもできます。

null 値を持つオブジェクトをスキップするための null チェック

そのようなオブジェクトをスキップすることがあなたのプログラムにとって受け入れ可能な場合、 null 参照であるオブジェクトへのメンバーアクセスを避けるために、別の種類の null チェックが使用されます:

if (expr != null) { DoSomething(); } // or, starting from C#6.0, with the conditional access operator: (expr)?.DoSomething();

このようなチェックを生成するために、ReSharper は Alt+Enter 上で null を確認する式をチェックする および 条件付きアクセスを使用する アクションを提供します。 null 許容性分析の設定に応じて、これらのアクションは クイックフィックスまたは コンテキストアクションとして表示されます。

ReSharper: null クイックフィックスの式を確認する

ただし、ReSharper が式が null を返すことができないと推定した場合(例えば、対応する項目が [NotNull] 属性でマークされている場合や、式がすでに null チェックされている場合など)、これらのアクションは利用できません。

この機能は、次の言語とテクノロジーで サポートされています。

言語: C#

言語: VB.NET

言語: C++

言語: ASP.NET

言語: Razor

言語: XAML

言語: Resx

言語: スクリプトの作成

言語: SQL

この機能は C# で利用可能です

この機能は Visual Basic では使用できません

この機能は C++ では使用できません

この機能は ASP.NET では使用できません

この機能は Razor では使用できません

機能は XAML では使用できません

機能はリソースファイルでは使用できません

機能はビルドスクリプトファイルでは使用できません

機能は SQL/NoSQL ファイルおよびインジェクションでは利用できません

2026 年 6 月 12 日