コンテキストアクション

ReSharperのコンテキストアクションは、コードに簡単な変更を加える必要がある場合に、入力の手間を大幅に省きます。 何回かキー入力するだけで、アクセス修飾子を変更したり、nullチェックコードを生成したり、foreachforを相互に変換したりできます。 C#、VB.NET、XAML、ASP.NET および他のサポート対象言語で 450 個以上のコンテキストアクションを使用できます。 変更したい要素の上でAlt+Enterを押して、適用するコンテキストアクションをご選択ください。

ReSharperのコンテキストアクション

コンテキストアクションの適用

現在のキャレット位置でコンテキストアクションが使用できるようになるとすぐに、ReSharperはハンマーアイコンReSharper's context action indicatorをキャレットの左側に表示します。 状況によっては複数の機能が使用でき、コンテキストアクションとクイックフィックスが混在する場合もありますが、その場合は最も優先度の高いアクションのアイコンが表示されます。 アクションインジケーターをクリックするか、Alt+Enterを押すと、使用できるアクションがすべて表示されます。

類似したコンテキストアクション(各種アクセス修飾子用のアクションなど)は、多くの場合同じグループにまとめられています。 このような場合は、右矢印を使ってグループを展開してから目的のアクションを選んでください。

広範囲にわたるコンテキストアクションの適用(ファイル、プロジェクト、ソリューション)

広範囲にわたるコンテキストアクションの適用

一部のコンテキストアクション(#regionsを削除列挙型メンバー値を指定名前を引数に追加など)は、現在のメソッド、クラス、ファイル内、現在のプロジェクト内やソリューション全体など、より広い範囲で自動的に適用できます。 右側の小さな矢印をクリックするか、キーボードの右矢印を押すと、変更を適用する場所を選べます。

クイックフィックスとコンテキストアクションの比較

コンテキストアクションとクイックフィックスの比較

ReSharperのドロップダウンリストには、コンテキストアクションと共にクイックフィックスも表示されます。 これら2つの違いは単純です。クイックフィックスはハイライト表示されたコードの問題にのみ表示され、問題の解決やコードの修正を目的とする一方、コンテキストアクションは単にコードを変更する小規模なリファクタリングを表示します。

クイックフィックスの方が優先度が高いことにご注意ください。このため、キャレット位置でクイックフィックスがある場合は、Alt+Enterを押して任意のコンテキストアクションがあるかどうかを確認する必要があります。

コンテキストアクションを使ったC#でのnullチェックの挿入

C#:パラメータのnullチェック

ReSharperではパラメータをnullチェックするために何か入力する必要はありません。Alt+Enterを押すだけで、ReSharperがnullチェックルーチン全体を生成します。

必要に応じてプロジェクトでJetBrainsのコード注釈を使用する場合、パラメータが[NotNull]属性でマークされるため、ReSharperはこのパラメータがnullの状態でメソッドが呼び出された際に警告を発します。

ReSharperのコンテキストアクションを使ったLINQからコードへの変換

C#:LINQをコードに変換

この例では、ReSharperのコンテキストアクションを使って、LINQクエリをforeachループとラムダ式に素早く変換する様子をご覧いただけます。

これは、ループをLINQステートメントに変換する、ReSharperの有名なクイックフィックスとは反対の動作を行うものです。

ReSharperのコンテキストアクションを使ったイテレータのコレクションへの変換

C#:イテレータをコレクションに変換

一部のコンテキストアクションは、むしろリファクタリングに近く、ロジックを維持しながら自動的に複雑なコード変換を実行します。

例えば、ReSharperはyield returnステートメントのあるイテレータを、コレクションを作成し、満たし、返すコードに変換できます。

ReSharperのコンテキストアクションを使った宣言と割り当ての分割

C#:宣言と割り当ての分割

既存のローカル変数を初期化に対して条件を加える必要がある場合、このコンテキストアクションを使ってすばやく初期化処理を分離できます。 仮に変数が暗黙的に入力されている場合でも、ReSharperは自動的に適切な型を推測し、それを宣言部で使用します。

ReSharperのコンテキストアクションを使った「if」式の反転

C#:「if」ステートメントの反転

このコンテキストアクションを使うと、ifステートメントの分岐を素早く入れ替えられます。 ReSharperは、条件が、どれだけ複雑であっても適切に反転し、ロジックが変更されないようにします。

ReSharperのコンテキストアクションを使った匿名メソッドとラムダ式の相互変換

C#:匿名メソッドとラムダ式の相互変換

デリゲートに使用される構文(匿名メソッドまたはラムダ式)に関係なく、ReSharperのコンテキストアクションでは手動でコードを書き直すことなく、数回のキー入力で構文を変更できます。

コンテキストアクションを使ったVB.NETでのオーバーロードの作成

VB.NET:パラメータなしのオーバーロードを作成

このコンテキストアクションを使うと、選択したパラメータのデフォルト値を使用するメソッドのオーバーロードを作成できます。また、ここでも入力は一切必要ありません。

このアクションはC#とTypeScriptでも使用できます。

ReSharperのXML系コードでのコンテキストアクション

XML系コードでのコンテキストアクション

In XML-like languages, ReSharper's context actions help you streamline routine editing procedures of expanding/collapsing empty tags, and converting attributes to tags and back. これらのアクションは、XML、XAML、ASP.NET、ビルドスクリプト、HTML、およびResxファイルで使用できます。

コンテキストアクションの設定

コンテキストアクションの設定

If you don't want ReSharper to show a particular context action in the context menu, you can disable it in the ReSharper Options dialog.