C# のクイックアクションとリファクタリング
Visual Studio Code では、ソースコードをリファクタリングする多くの方法と、コーディング中にコードを生成したり問題を修正したりするためのクイックフィックスが提供されます。これらにアクセスするには、表示される「電球」アイコンをクリックするか、クイックフィックスコマンド ⌘. (Windows、Linux Ctrl+.) を使用して、クイックフィックスとリファクタリングオプションのリストを表示します。エディターを右クリックしてリファクタリング ⌃⇧R (Windows、Linux Ctrl+Shift+R) を選択すると、リファクタリングオプションのみを表示することもできます。
サポートされているリファクタリングとクイックフィックス
awaitの追加- メンバーからコンストラクターパラメーターを追加
DebuggerDisplay属性の追加- 明示的なキャストの追加
- ファイルヘッダーの追加
- 不足している
usings/ インポートの追加 - 名前付き引数の追加
- 匿名型をクラスに変換
- 自動プロパティと完全なプロパティの変換
- 直接キャストと
as式の変換 forループとforeachステートメントの変換- Get メソッドとプロパティの変換
ifとswitchステートメントの変換- 通常の文字列と逐語的文字列の変換
- クラスをレコードに変換
- ローカル関数をメソッドに変換
- 数値リテラルを16進数、10進数、または2進数に変換
- プレースホルダーを補間文字列に変換
- 通常の文字列を補間文字列に変換
- タプルを構造体に変換
- フィールドのラップ
- 比較演算子の生成
- デフォルトコンストラクターの生成
- パラメーターの生成
- すべてのメンバーを明示的に実装
- すべてのメンバーを暗黙的に実装
- メソッドのインライン化
- 一時変数のインライン化
- 式にローカル変数を導入
- パラメーターの導入
usingステートメントの導入- 条件式と論理演算の反転
ifの反転- メンバーを静的にする
- 宣言を参照の近くに移動
- 型を一致するファイルに移動
forステートメントの反転ifステートメントの分割または結合- 明示的な型を使用
- 暗黙的な型を使用
- ラムダ式またはブロック本体を使用
- 再帰パターンを使用
- ラップ、インデント、および整列リファクタリング
await の追加
内容: 関数呼び出しに await キーワードを追加します。
使用状況: 非同期メソッド内で関数を呼び出す場合。
手順
- 関数呼び出しの場所にカーソルを置きます (おそらく赤色で下線が引かれています)。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
awaitの追加を選択します。

メンバーからコンストラクターパラメーターを追加
内容: 選択したクラスメンバーに基づいてパラメーターを持つ新しいコンストラクターを生成します。
使用状況: 新しいコンストラクターを導入し、すべての正しいパラメーターで自動的に適切に宣言したい場合。
理由: 使用する前にコンストラクターを宣言することもできますが、この機能はそれを自動的に生成します。
手順
- コンストラクターにパラメーターとして追加したいクラスメンバーをハイライトします。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- コンストラクター
( の生成を選択します。, , )

DebuggerDisplay 属性の追加
内容: DebuggerDisplay 属性は、デバッガー変数ウィンドウでオブジェクト、プロパティ、またはフィールドがどのように表示されるかを制御します。
使用状況: コード内でデバッガー内のプロパティをプログラムで固定したい場合。
理由: プロパティを固定すると、そのプロパティをデバッガー内のオブジェクトのプロパティリストの先頭に浮上させることで、オブジェクトをプロパティごとにすばやく検査できます。
手順
- 型、デリゲート、プロパティ、またはフィールドのいずれかにカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーし、
DebuggerDisplay属性の追加を選択します。 DebuggerDisplay属性は、デフォルトのToString()を返す自動メソッドとともに追加されます。

明示的なキャストの追加
内容: 使用状況に基づいて、式に明示的なキャストを自動的に追加できます。
使用状況: 式に明示的なキャストを追加し、それを自動的に適切に割り当てたい場合。
理由: 式に明示的なキャストを手動で追加することもできますが、この機能はコードのコンテキストに基づいてそれを自動的に追加します。
手順
- エラーの場所にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 明示的なキャストの追加を選択します。
ファイルヘッダーの追加
内容: EditorConfig を使用して、既存のファイル、プロジェクト、ソリューションにファイルヘッダーを追加します。
使用状況: ファイル、プロジェクト、ソリューションにファイルヘッダーを簡単に追加したい場合。
理由: 著作権保護のためにファイルヘッダーを含めることがチームによって義務付けられている場合。
手順
- まだ持っていない場合は、プロジェクトまたはソリューションに EditorConfig を追加します。
- EditorConfig ファイルに次のルールを追加します:
file_header_template。 - ルールの値を適用したいヘッダーテキストに設定します。ファイル名のプレースホルダーとして
{fileName}を使用できます。 - 任意の C# ファイルの最初の行にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- ファイルヘッダーの追加を選択します。
不足している using / インポートの追加
内容: コピーアンドペーストされたコードに必要なインポートまたは using ディレクティブをすぐに追加できます。
使用状況: プロジェクトのさまざまな場所や他のソースからコードをコピーして新しいコードに貼り付けることは一般的な習慣です。このクイックアクションは、コピーアンドペーストされたコードの不足しているインポートディレクティブを見つけて、それらを追加するように促します。このコードフィックスは、プロジェクト間の参照も追加できます。
理由: クイックアクションが自動的に必要なインポートを追加するため、コードが必要とする using ディレクティブを手動でコピーする必要はありません。
手順
- ファイルからコードをコピーし、必要な using ディレクティブを含めずに新しいファイルに貼り付けます。結果として発生するエラーには、不足している using ディレクティブを追加するコードフィックスが付属しています。
- ⌘. (Windows、Linux Ctrl+.) を選択して、クイックアクションとリファクタリングメニューを開きます。
- 不足している参照を追加するには、Using
を選択します。

名前付き引数の追加
内容: 関数呼び出しで指定されたパラメーター値に名前付き引数を追加します。
使用状況: パラメーターが多いメソッドがある場合、コードの可読性を高めるために名前付き引数を追加できます。
手順
- 関数呼び出し内のパラメーターにカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 引数名 <パラメーター名> を追加を選択します。

匿名型をクラスに変換
内容: 匿名型をクラスに変換します。
使用状況: クラスでさらに構築したい匿名型がある場合。
理由: 匿名型は、ローカルでしか使用しない場合に便利です。コードが成長するにつれて、それらをクラスに昇格させる簡単な方法があることは素晴らしいことです。
手順
- 匿名 (
var) 型にカーソルを置きます。 - ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- クラスに変換を選択します。

自動プロパティと完全なプロパティの変換
内容: 自動実装プロパティと完全なプロパティの間で変換します。
使用状況: プロパティのロジックが変更された場合。
理由: 自動実装プロパティと完全なプロパティの間で手動で変換することもできますが、この機能は自動的にその作業を行います。
手順
- プロパティ名にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次の2つのオプションから選択します
完全なプロパティに変換を選択します。

自動プロパティを使用を選択します。

直接キャストと 'as' 式の変換
内容: 変数を通常のキャストと as キーワードを使用した試行キャストの間で変換します。
使用状況: 特定のシナリオでキャストが失敗すると予想される場合 (as)、またはキャストが失敗しないと予想される場合 (直接キャスト)。
手順
- 変数にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次の2つのオプションから選択します
キャストに変更を選択します。

as 式に変更を選択します。

for ループと foreach ステートメントの変換
内容: コードに for ループがある場合、このリファクタリングを使用して foreach ステートメントに変換できます。
理由: for ループを foreach ステートメントに変換したい理由は次のとおりです。
- ループ内でローカルループ変数をアイテムにアクセスするためのインデックスとしてのみ使用している場合。
- コードを簡素化し、初期化子、条件、およびイテレーターセクションでの論理エラーの可能性を減らしたい場合。
foreach ステートメントを for ループに変換したい理由は次のとおりです。
- ループ内でローカルループ変数をアイテムへのアクセス以外にも使用したい場合。
- 多次元配列を反復処理しており、配列要素をより細かく制御したい場合。
手順
foreachまたはforキーワードにカーソルを置きます。- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次の2つのオプションから選択します
for に変換を選択します。

foreach に変換を選択します。

Get メソッドとプロパティの変換
Get メソッドをプロパティに変換
内容: Get メソッドをプロパティ (およびオプションで Set メソッド) に変換できます。
使用状況: ロジックを含まない Get メソッドがある場合。
手順
- Get メソッド名にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- (オプション) Set メソッドがある場合は、この時点で Set メソッドも変換できます。
をプロパティに置換 を選択します。

プロパティを Get メソッドに変換
内容: プロパティを Get メソッドに変換できます。
使用状況: 値の即時設定と取得以上のことを伴うプロパティがある場合。
手順
- Get メソッド名にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- <プロパティ名> をメソッドに置換を選択します。

if と switch ステートメントの変換
内容: if ステートメントを switch ステートメントまたは C# 8.0 の switch 式に変換します。
使用状況: if ステートメントを switch ステートメントまたは switch 式に、あるいはその逆に変換したい場合。
理由: if ステートメントを使用している場合、このリファクタリングにより switch ステートメントまたは switch 式への簡単な移行が可能になります。
手順
ifキーワードにカーソルを置きます。- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のオプションから選択します
switch ステートメントに変換を選択します。

switch 式に変換を選択します。

if ステートメントに変換を選択します。

通常の文字列と逐語的文字列の変換
内容: 通常の文字列リテラルと逐語的文字列リテラルの間で変換できます。
使用状況: コード内のスペースを節約したい場合、またはより明確にしたい場合。
理由: 逐語的文字列リテラルを通常の文字列リテラルに変換すると、スペースを節約できます。通常の文字列リテラルを逐語的文字列リテラルに変換すると、より明確にすることができます。
手順
- 通常の文字列リテラルまたは逐語的文字列リテラルのいずれかにキャレットを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のオプションのいずれかから選択します
通常の文字列に変換を選択します。
逐語的文字列に変換を選択します。
クラスをレコードに変換
内容: クラスを C# レコードに変換します。
使用状況: クラスをレコードに素早く変更したい場合。レコードはデータの保存と不変性のために作られています。
手順
- クラス名にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 位置レコードに変換を選択します。


ローカル関数をメソッドに変換
内容: ローカル関数をメソッドに変換します。
使用状況: 現在のローカルコンテキストの外で定義したいローカル関数がある場合。
理由: ローカル関数をメソッドに変換して、ローカルコンテキストの外から呼び出せるようにしたい場合。ローカル関数が長くなりすぎたときにメソッドに変換したい場合があります。関数を別のメソッドで定義すると、コードが読みやすくなります。
手順
- ローカル関数にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- メソッドに変換を選択します。

数値リテラルを16進数、10進数、または2進数に変換
内容: 数値を16進数、2進数、または10進数の間で変換します。
使用状況: 手動で変換を計算することなく、数値を目的の基数に自動的に変換したい場合に使用します。
手順
- 数値リテラルにカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のいずれかのオプションを選択します
10進数に変換を選択します。

16進数に変換を選択します。

2進数に変換を選択します。

プレースホルダーを補間文字列に変換
内容: String.Format でフォーマットされた結果文字列 (またはプレースホルダー) を補間文字列に変換します。
使用状況: 補間文字列を素早く使用したい場合に使用します。
理由: 補間文字列を使用すると、String.Format よりも読みやすいバージョンになり、変数名に直接アクセスできます。
手順
String.Formatプレースホルダーにカーソルを置きます。- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 補間文字列に変換を選択します。

通常の文字列を補間文字列に変換
内容: 通常の文字列を補間文字列に変更します。
使用状況: コードを整理して読みやすくしたい場合に使用します。
手順
- 変換したい文字列にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 補間文字列に変換を選択します。


タプルを構造体に変換
内容: タプルを struct に変換します。
使用状況: タプルを struct に素早く変更し、複数回アクセスしたい固定データがある場合に使用します。
手順
-
タプルにカーソルを置きます。
-
⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
-
次のいずれかのオプションを選択します
structに変換 -> 含まれるメンバーの使用箇所を更新を選択します。structに変換 -> 含まれる型の使用箇所を更新を選択します。structに変換 -> 含まれるプロジェクトの使用箇所を更新を選択します。structに変換 -> 依存プロジェクトの使用箇所を更新を選択します。


フィールドのラップ
内容: フィールドをプロパティに変換し、そのフィールドのすべての使用箇所を新しく作成されたプロパティを使用するように更新できます。
使用状況: フィールドをプロパティに移動し、そのフィールドへのすべての参照を更新したい場合。
理由: 他のクラスにフィールドへのアクセスを与えたいが、それらのクラスに直接アクセスさせたくない場合。フィールドをプロパティでラップすることで、たとえば、割り当てられる値を検証するコードを記述できます。
手順
- ラップするフィールド名の中にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のいずれかを選択します
フィールドをラップ: <フィールド名> (プロパティを使用) を選択します。

フィールドをラップ: <フィールド名> (ただしフィールドは引き続き使用) を選択します。

比較演算子の生成
内容: IComparable を実装する型に対して比較演算子を生成できます。
使用状況: IComparable を実装する型がある場合、比較演算子を自動的に追加します。
理由: 値型を実装する場合、ValueType の Equals メソッドのデフォルト実装よりもパフォーマンスを向上させるために、Equals メソッドをオーバーライドすることを検討する必要があります。
手順
- クラス内または IComparable キーワードにカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- ドロップダウンメニューから比較演算子の生成を選択します。
デフォルトコンストラクターの生成
内容: クラス上の新しいデフォルトコンストラクターのコードをすぐに生成できます。
使用状況: 新しいデフォルトコンストラクターを導入し、それを自動的に適切に宣言したい場合。
理由: 使用する前にコンストラクターを宣言することもできますが、この機能はそれを自動的に生成します。
手順
- クラス名にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- コンストラクター
() の生成を選択します。

パラメーターの生成
内容: メソッドパラメーターを自動的に生成します。
使用状況: 現在のコンテキストに存在しないメソッド内の変数を参照してエラーが発生した場合、コードフィックスとしてパラメーターを生成できます。
理由: コンテキストを失うことなく、メソッドシグネチャを素早く変更できます。
手順
- 変数名にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- パラメーターの生成を選択します。

すべてのメンバーを明示的に実装
内容: クラス内でインターフェースのメソッドを明示的に定義します。明示的なインターフェース実装は、指定されたインターフェースを介してのみ呼び出されるクラスメンバーです。
使用状況: 次の場合に使用します
- 同じ実装を複数のインターフェースで呼び出したくない場合。
- プロパティとメソッドなど、2つのインターフェースがそれぞれ同じ名前の異なるメンバーを宣言しているケースを解決したい場合。
手順
- クラスで実装されているインターフェースにカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- すべてのメンバーを明示的に実装を選択します。

すべてのメンバーを暗黙的に実装
内容: クラス内でインターフェースのメソッドを暗黙的に定義します。暗黙的なインターフェース実装とは、インターフェースのメソッドとプロパティがパブリックメソッドとしてクラスに直接追加されることです。
手順
- クラスで実装されているインターフェースにカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- インターフェースを実装を選択します。

メソッドのインライン化
内容: メソッドのインライン化のリファクタリング。
使用状況: 単一のステートメント本体内の静的、インスタンス、および拡張メソッドの使用箇所を、元のメソッド宣言を削除するオプションとともに置換したい場合。
理由: このリファクタリングはより明確な構文を提供します。
手順
- メソッドの使用箇所にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のオプションのいずれかから選択します
インラインメソッド宣言を削除するには、インライン化

元のメソッド宣言を保持するには、インライン化して

一時変数のインライン化
内容: 一時変数を削除し、その値で置き換えることができます。
使用状況: 一時変数の使用により、コードの理解が難しくなる場合。
理由: 一時変数を削除すると、コードが読みやすくなる場合があります。
手順
- インライン化する一時変数の中にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 一時変数のインライン化を選択します。

式にローカル変数を導入
内容: 既存の式を置き換えるローカル変数をすぐに生成できます。
使用状況: ローカル変数にすれば後で簡単に再利用できるコードがある場合。
理由: コードを複数回コピーアンドペーストしてさまざまな場所で使用することもできますが、一度操作を実行し、結果をローカル変数に格納し、そのローカル変数を全体で使用する方が良いでしょう。
手順
- 新しいローカル変数に割り当てたい式にキャレットを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のオプションから選択します
ローカルの導入 -> <式> のローカルを導入を選択します。

ローカルの導入 -> <式> のすべての出現箇所のローカルを導入を選択します。
パラメーターの導入
内容: 既存の式を置き換える新しいパラメーターをすぐに生成できます。
使用状況: パラメーターにすれば後で簡単に再利用できるコードがある場合。
理由: コードを複数回コピーアンドペーストしてさまざまな場所で使用することもできますが、一度操作を実行し、結果をパラメーターに格納し、そのパラメーターを全体で使用する方が良いでしょう。
手順
- 新しいパラメーターに割り当てたい式にキャレットを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のオプションから選択します
<式> のパラメーターを導入 -> および呼び出し箇所を直接更新を選択します。

<式> のパラメーターを導入 -> 抽出されたメソッド内へを選択します。

<式> のパラメーターを導入 -> 新しいオーバーロード内へを選択します。

using ステートメントの導入
内容: IDisposable インスタンスに using ステートメント / コードブロックを追加します。
使用状況: IDisposable インスタンスがあり、それが正しく取得、使用、破棄されることを確実にしたい場合。
手順
- 新しいパラメーターに割り当てたい式にキャレットを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
usingステートメントの導入を選択します。

条件式と論理演算の反転
内容: 条件式または条件付き and \ or 演算子を反転できます。
使用状況: 反転するとより理解しやすくなる条件式または条件付き and \ or 演算子がある場合。
理由: 式または条件付き and \ or 演算子を手動で反転すると、はるかに時間がかかり、エラーが発生する可能性があります。このコードフィックスは、このリファクタリングを自動的に行うのに役立ちます。
手順
- 条件式または条件付き
and\or演算子にカーソルを置きます。 - ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 条件を反転または
&&を||に置換を選択します。


if の反転
内容: コードの意味を変えずに if または if else ステートメントを反転できます。
使用状況: 反転するとより理解しやすくなる if または if else ステートメントがある場合。
理由: if または if else ステートメントを手動で反転すると、はるかに時間がかかり、エラーが発生する可能性があります。このコードフィックスは、このリファクタリングを自動的に行うのに役立ちます。
手順
ifまたはif elseステートメントにカーソルを置きます。- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
ifの反転を選択します。

メンバーを静的にする
内容: メンバーを静的にします。
使用状況: 非静的メンバーを静的にしたい場合。
理由: 静的メンバーは可読性を向上させます。特定のコードが分離されていることを知ることで、理解、再読、再利用が容易になります。
手順
- メンバー名にキャレットを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 静的にするを選択します。

宣言を参照の近くに移動
内容: 変数宣言をその使用箇所に近づけることができます。
使用状況: より狭いスコープにできる変数宣言がある場合。
理由: そのままにしておくこともできますが、可読性の問題や情報の隠蔽を引き起こす可能性があります。これは可読性を向上させるためのリファクタリングの機会です。
手順
- 変数宣言にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 宣言を参照の近くに移動を選択します。

型を一致するファイルに移動
内容: 選択した型を同じ名前の別のファイルに移動できます。
使用状況: 同じファイルに複数のクラス、構造体、インターフェースなどがあり、それらを分離したい場合。
理由: 同じファイルに複数の型を配置すると、これらの型を見つけるのが困難になる場合があります。型を同じ名前のファイルに移動することで、コードが読みやすくなり、ナビゲートしやすくなります。
手順
- 定義されている型の名前の中にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 型を
.cs に移動 を選択します。

for ステートメントの反転
内容: for ステートメントを反転できます。
使用状況: for ステートメントの意味とその反復方法を反転したい場合に使用します。
理由: for ステートメントを手動で反転すると、はるかに時間がかかり、エラーが発生する可能性があります。このコードフィックスは、このリファクタリングを自動的に行うのに役立ちます。
手順
forステートメントにカーソルを置きます。- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
forステートメントを反転を選択します。

if ステートメントの分割または結合
内容: if ステートメントを分割または結合します。
使用状況: && または || 演算子を使用する if ステートメントをネストされた if ステートメントに分割したい場合、または if ステートメントを外側の if ステートメントと結合したい場合。
理由: これはスタイルの好みの問題です。
手順
if ステートメントを分割したい場合
&&または||演算子の近くのifステートメントにカーソルを置きます。- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- ネストされた
ifステートメントに分割を選択します。

内側の if ステートメントを外側の if ステートメントと結合したい場合
- 内側の
ifキーワードにカーソルを置きます。 - ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- ネストされた
ifステートメントと結合を選択します。

明示的な型を使用
内容: このリファクタリングを使用して、ローカル変数宣言の var を明示的な型に置き換えます。
理由: コードの可読性を向上させるため、または宣言で変数を初期化したくない場合。
ただし、変数が匿名型で初期化され、オブジェクトのプロパティが後でアクセスされる場合は、var を使用する必要があります。詳細については、暗黙的に型指定されたローカル変数 (C#) を参照してください。
手順
varキーワードにキャレットを置きます。- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
varの代わりに明示的な型を使用を選択します。

暗黙的な型を使用
内容: このリファクタリングを使用して、ローカル変数宣言の明示的な型を var に置き換えます。
理由: 個人のコーディング規約に合わせるため、および表示されるコードを減らすため。Var は、変数が匿名型で初期化され、オブジェクトのプロパティが後でアクセスされる場合に使用する必要があります。詳細については、暗黙的に型指定されたローカル変数 (C#) を参照してください。
手順
- 明示的な型キーワードにキャレットを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 暗黙的な型を使用を選択します。

ラムダ式またはブロック本体を使用
内容: ラムダ式を式本体またはブロック本体を使用するようにリファクタリングできます。
使用状況: ラムダ式が式本体またはブロック本体のいずれかを使用することを好む場合。
理由: ラムダ式は、ユーザーの好みに応じて可読性を向上させるためにリファクタリングできます。
手順
- ラムダ演算子の右側にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のいずれかを選択します
ラムダ式にブロック本体を使用を選択します。

ラムダ式に式本体を使用を選択します。

再帰パターンを使用
内容: コードブロックを再帰パターンを使用するように変換します。このリファクタリングは、switch ステートメント、プロパティパターンマッチング、タプルパターンマッチング、および位置パターンマッチングで機能します。
使用状況: 再帰パターンを使用すると、コードがより読みやすく/きれいになります。
手順
- 再帰パターンに変換したい式にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のいずれかを選択します
switch ステートメントを式に変換を選択します。

再帰パターンを使用を選択します。


ラップ、インデント、および整列リファクタリング
呼び出しチェーンをラップして整列
内容: メソッド呼び出しのチェーンをラップして整列できます。
使用状況: 1つのステートメントに複数のメソッド呼び出しからなる長いチェーンがある場合。
理由: ユーザーの好みに応じてラップまたはインデントされている場合、長いリストは読みやすくなります。
手順
- 呼び出しチェーンのいずれかにカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- リファクタリングを受け入れるには、呼び出しチェーンをラップまたは呼び出しチェーンをラップして整列を選択します。

パラメーターまたは引数をラップ、インデント、および整列
内容: パラメーターまたは引数をラップ、インデント、および整列できます。
使用状況: 複数のパラメーターまたは引数を持つメソッド宣言または呼び出しがある場合。
理由: ユーザーの好みに応じてラップまたはインデントされている場合、長いパラメーターまたは引数のリストは読みやすくなります。
手順
- パラメーターリストにカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- 次のオプションから選択します
すべてのパラメーターをラップ -> ラップされたパラメーターを整列を選択します。

すべてのパラメーターをラップ -> すべてのパラメーターをインデントを選択します。

すべてのパラメーターをラップ -> ラップされたパラメーターをインデントを選択します。

二項式をラップ
内容: 二項式をラップできます。
使用状況: 二項式がある場合。
理由: ユーザーの好みに応じてラップされている場合、二項式は読みやすくなります。
手順
- 二項式にカーソルを置きます。
- ⌘. (Windows、Linux Ctrl+.) を押して、クイックアクションとリファクタリングメニューをトリガーします。
- リファクタリングを受け入れるには、式をラップを選択します。
