ReSharperのコンテキストアクションは、コードに簡単な変更を加える必要がある場合に、入力の手間を大幅に省きます。 何回かキー入力するだけで、アクセス修飾子を変更したり、nullチェックコードを生成したり、foreach
とfor
を相互に変換したりできます。 C#、VB.NET、XAML、ASP.NET および他のサポート対象言語で 450 個以上のコンテキストアクションを使用できます。 変更したい要素の上でAlt+Enterを押して、適用するコンテキストアクションをご選択ください。
現在のキャレット位置でコンテキストアクションが使用できるようになるとすぐに、ReSharperはハンマーアイコンをキャレットの左側に表示します。 状況によっては複数の機能が使用でき、コンテキストアクションとクイックフィックスが混在する場合もありますが、その場合は最も優先度の高いアクションのアイコンが表示されます。 アクションインジケーターをクリックするか、Alt+Enterを押すと、使用できるアクションがすべて表示されます。
類似したコンテキストアクション(各種アクセス修飾子用のアクションなど)は、多くの場合同じグループにまとめられています。 このような場合は、右矢印を使ってグループを展開してから目的のアクションを選んでください。
一部のコンテキストアクション(#regionsを削除、列挙型メンバー値を指定、名前を引数に追加など)は、現在のメソッド、クラス、ファイル内、現在のプロジェクト内やソリューション全体など、より広い範囲で自動的に適用できます。 右側の小さな矢印をクリックするか、キーボードの右矢印を押すと、変更を適用する場所を選べます。
ReSharperのドロップダウンリストには、コンテキストアクションと共にクイックフィックスも表示されます。 これら2つの違いは単純です。クイックフィックスはハイライト表示されたコードの問題にのみ表示され、問題の解決やコードの修正を目的とする一方、コンテキストアクションは単にコードを変更する小規模なリファクタリングを表示します。
クイックフィックスの方が優先度が高いことにご注意ください。このため、キャレット位置でクイックフィックスがある場合は、Alt+Enterを押して任意のコンテキストアクションがあるかどうかを確認する必要があります。
ReSharperではパラメータをnullチェックするために何か入力する必要はありません。Alt+Enterを押すだけで、ReSharperがnullチェックルーチン全体を生成します。
必要に応じてプロジェクトでJetBrainsのコード注釈を使用する場合、パラメータが[NotNull]
属性でマークされるため、ReSharperはこのパラメータがnullの状態でメソッドが呼び出された際に警告を発します。
この例では、ReSharperのコンテキストアクションを使って、LINQクエリをforeach
ループとラムダ式に素早く変換する様子をご覧いただけます。
これは、ループをLINQステートメントに変換する、ReSharperの有名なクイックフィックスとは反対の動作を行うものです。
一部のコンテキストアクションは、むしろリファクタリングに近く、ロジックを維持しながら自動的に複雑なコード変換を実行します。
例えば、ReSharperはyield return
ステートメントのあるイテレータを、コレクションを作成し、満たし、返すコードに変換できます。
既存のローカル変数を初期化に対して条件を加える必要がある場合、このコンテキストアクションを使ってすばやく初期化処理を分離できます。 仮に変数が暗黙的に入力されている場合でも、ReSharperは自動的に適切な型を推測し、それを宣言部で使用します。
このコンテキストアクションを使うと、if
ステートメントの分岐を素早く入れ替えられます。 ReSharperは、条件が、どれだけ複雑であっても適切に反転し、ロジックが変更されないようにします。
デリゲートに使用される構文(匿名メソッドまたはラムダ式)に関係なく、ReSharperのコンテキストアクションでは手動でコードを書き直すことなく、数回のキー入力で構文を変更できます。
このコンテキストアクションを使うと、選択したパラメータのデフォルト値を使用するメソッドのオーバーロードを作成できます。また、ここでも入力は一切必要ありません。
このアクションはC#とTypeScriptでも使用できます。
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ファイルで使用できます。