VS Codeのエージェントモードを拡張するには、を試してください!

C# のクイック アクションとリファクタリング

Visual Studio Code では、ソース コードをリファクタリングする多くの方法に加え、コーディング中にコードを生成したり問題を修正したりするためのクイック修正が提供されています。これらにアクセスするには、表示される「電球」アイコンをクリックするか、クイック修正 コマンド ⌘. (Windows, Linux Ctrl+.) を使用して、クイック修正とリファクタリング オプションのリストを表示します。エディターを右クリックして リファクター ⌃⇧R (Windows, Linux Ctrl+Shift+R) を選択し、リファクタリング オプションのみを表示することもできます。

サポートされているリファクタリングとクイック修正

await の追加

内容: 関数呼び出しに await キーワードを追加します。

状況: 非同期メソッド内で関数を呼び出すとき。

方法

  1. 関数呼び出しにキャレットを置きます (ほとんどの場合、赤の下線が引かれます)。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. await を追加 を選択します。

Add await example

メンバーからコンストラクター パラメーターを追加

内容: 選択されたクラス メンバーに基づいてパラメーターを持つ新しいコンストラクターを生成します。

状況: 新しいコンストラクターを導入し、すべての正しいパラメーターを自動的に適切に宣言したい場合。

理由: コンストラクターを使用する前に宣言することもできますが、この機能は自動的に生成します。

方法

  1. コンストラクターにパラメーターとして追加したいクラス メンバーをハイライトします。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. コンストラクター <クラス名>(<メンバーの型>, <メンバーの型>, <など>) を生成 を選択します。

Add constructor parameters from members example

DebuggerDisplay 属性の追加

内容: DebuggerDisplay 属性は、オブジェクト、プロパティ、またはフィールドがデバッガーの変数ウィンドウでどのように表示されるかを制御します。

状況: デバッガー内でプロパティをピン留めしたいとき、コード内でプログラム的に行いたい場合。

理由: プロパティをピン留めすると、デバッガー内のオブジェクトのプロパティ リストの先頭にそのプロパティを移動させることで、オブジェクトをプロパティで素早く検査できます。

方法

  1. 型、デリゲート、プロパティ、またはフィールドのいずれかにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーし、DebuggerDisplay 属性を追加 を選択するには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. DebuggerDisplay 属性は、既定の ToString() を返す自動メソッドと共に追加されます。

Add DebuggerDisplay attribute example

明示的なキャストの追加

内容: 使用状況に基づいて、式に明示的なキャストを自動的に追加できます。

状況: 式に明示的なキャストを追加する必要があり、それを自動的に適切に割り当てたい場合。

理由: 式に明示的なキャストを手動で追加することもできますが、この機能はコードのコンテキストに基づいて自動的に追加します。

方法

  1. エラーにキャレットを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 明示的なキャストを追加 を選択します。

ファイル ヘッダーの追加

内容: EditorConfig を使用して、既存のファイル、プロジェクト、およびソリューションにファイル ヘッダーを追加します。

状況: ファイル、プロジェクト、およびソリューションにファイル ヘッダーを簡単に追加したい場合。

理由: チームが著作権目的でファイル ヘッダーを含めることを要求している場合。

方法

  1. まだない場合は、プロジェクトまたはソリューションに EditorConfig を追加します。
  2. EditorConfig ファイルに次のルールを追加します: file_header_template
  3. ルールの値を適用したいヘッダー テキストに設定します。ファイル名のプレースホルダーとして {fileName} を使用できます。
  4. 任意の C# ファイルの最初の行にキャレットを置きます。
  5. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  6. ファイル ヘッダーを追加 を選択します。

不足している usings / インポートの追加

内容: コピー&ペーストされたコードに必要なインポートまたは using ディレクティブをすぐに追加できます。

状況: プロジェクトのさまざまな場所や他のソースからコードをコピーして新しいコードに貼り付けるのは一般的なプラクティスです。このクイック アクションは、コピー&ペーストされたコードに不足しているインポート ディレクティブを見つけ、追加を促します。このコード修正は、プロジェクト間の参照を追加することもできます。

理由: クイック アクションは必要なインポートを自動的に追加するため、コードが必要とする using ディレクティブを手動でコピーする必要がありません。

方法

  1. ファイルからコードをコピーし、必要な using ディレクティブを含めずに新しいファイルに貼り付けます。結果として生じるエラーには、不足している using ディレクティブを追加するコード修正が付随します。
  2. クイック アクションとリファクタリング メニューを開くには、⌘. (Windows, Linux Ctrl+.) を選択します。
  3. 不足している参照を追加するには、Using <あなたの参照> を選択します。

Add missing  / imports example

名前付き引数の追加

内容: 関数呼び出しで指定されたパラメーター値に名前付き引数を追加します。

状況: 多数のパラメーターを持つメソッドがある場合、名前付き引数を追加してコードをより読みやすくすることができます。

方法

  1. 関数呼び出し内のパラメーターにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 引数名 <パラメーター名> を追加 を選択します。

Add named argument example

匿名型をクラスに変換

内容: 匿名型をクラスに変換します。

状況: クラスで拡張し続けたい匿名型がある場合。

理由: 匿名型はローカルでのみ使用する場合に便利です。コードが大きくなるにつれて、それらをクラスに昇格させる簡単な方法があると便利です。

方法

  1. 匿名 (var) 型にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. クラスに変換 を選択します。

Convert anonymous type to class example

自動実装プロパティと完全プロパティ間の変換

内容: 自動実装プロパティと完全プロパティ間で変換します。

状況: プロパティのロジックが変更された場合。

理由: 自動実装プロパティと完全プロパティ間の変換は手動でもできますが、この機能は自動的に作業を行います。

方法

  1. プロパティ名にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 次の 2 つのオプションから選択します

完全プロパティに変換 を選択します。

Convert to full property example

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

Use auto property example

直接キャストと 'as' 式間の変換

内容: as キーワードを使用して、変数を通常のキャストと試行キャストの間で変換します。

状況: 特定のシナリオでキャストが失敗することを予期する場合 (as)、またはキャストが決して失敗しないことを予期する場合 (直接キャスト)。

方法

  1. 変数にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 次の 2 つのオプションから選択します

キャストに変更 を選択します。

Change to cast example

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

Change to  expression example

for ループと foreach ステートメント間の変換

内容: コードに for ループがある場合、このリファクタリングを使用して foreach ステートメントに変換できます。

理由: for ループを foreach ステートメントに変換する理由には次のようなものがあります

  • ループ内でローカル ループ変数をアイテムにアクセスするためのインデックスとしてしか使用しない。
  • コードを簡素化し、初期化子、条件、および反復子セクションでの論理エラーの可能性を減らしたい。

foreach ステートメントを for ループに変換する理由には次のようなものがあります

  • ループ内でローカル ループ変数をアイテムへのアクセス以上の目的で使用したい。
  • 多次元配列を反復処理しており、配列要素の制御をより細かくしたい。

方法

  1. foreach または for キーワードにキャレットを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 次の 2 つのオプションから選択します

for に変換 を選択します。

Convert to  example

foreach に変換 を選択します。

Convert to

Get メソッドとプロパティ間の変換

Get メソッドをプロパティに変換

内容: Get メソッドをプロパティに変換できます (オプションで Set メソッドも)。

状況: ロジックを含まない Get メソッドがある場合。

方法

  1. Get メソッド名にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. (オプション) Set メソッドがある場合は、この時点で Set メソッドも変換できます。<Get メソッド名または Set メソッド名> をプロパティに置換 を選択します。

Replace Get method with property example

プロパティを Get メソッドに変換

内容: プロパティを Get メソッドに変換できます。

状況: 単に値を設定したり取得したりする以上の処理を伴うプロパティがある場合。

方法

  1. Get メソッド名にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. <プロパティ名> をメソッドに置換 を選択します。

Replace property name with method example

if と switch ステートメント間の変換

内容: if ステートメントを switch ステートメントまたは C# 8.0 の switch 式に変換します。

状況: if ステートメントを switch ステートメントまたは switch 式に変換したい場合、およびその逆の場合。

理由: if ステートメントを使用している場合、このリファクタリングは switch ステートメントまたは switch 式への簡単な移行を可能にします。

方法

  1. if キーワードにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 以下のオプションから選択します

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

Convert to  statement example

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

Convert to  expression example

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

Convert to  statement example

通常の文字列と逐語的文字列間の変換

内容: 通常の文字列と逐語的文字列リテラル間で変換できます。

状況: スペースを節約したい、またはコードの明確さを高めたい場合。

理由: 逐語的文字列リテラルを通常の文字列リテラルに変換すると、スペースを節約できます。通常の文字列リテラルを逐語的文字列リテラルに変換すると、より明確になります。

方法

  1. 通常の文字列または逐語的文字列リテラルのいずれかにキャレットを置きます
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 次のいずれかのオプションから選択します

通常の文字列に変換 を選択します。

逐語的文字列に変換 を選択します。

クラスをレコードに変換

内容: クラスを C# のレコードに変換します。

状況: データの格納と不変性に特化したレコードにクラスを素早く変更したい場合。

方法

  1. クラス名にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 位置指定レコードに変換 を選択します。

Convert class to record before example

Convert class to record after example

ローカル関数をメソッドに変換

内容: ローカル関数をメソッドに変換します。

状況: 現在のローカル コンテキストの外で定義したいローカル関数がある場合。

理由: ローカル関数をローカル コンテキストの外で呼び出せるようにメソッドに変換したい場合。ローカル関数が長くなりすぎた場合にメソッドに変換すると良いかもしれません。関数を別のメソッドで定義すると、コードが読みやすくなります。

方法

  1. ローカル関数にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. メソッドに変換 を選択します。

Convert local function to method example

数値リテラルを 16 進数、10 進数、または 2 進数に変換

内容: 数値を 16 進数、2 進数、または 10 進数に変換します。

状況: 手動で変換を計算することなく、数値を目的の基数に自動的に変換したい場合に使用します。

方法

  1. 数値リテラルにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 次のいずれかのオプションを選択します

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

Convert to decimal example

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

Convert to hex example

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

Convert to binary example

プレースホルダーを挿入文字列に変換

内容: String.Format で書式設定された結果の文字列 (またはプレースホルダー) を挿入文字列に変換します。

状況: 挿入文字列を素早く使用したい場合。

理由: 挿入文字列は String.Format よりも読みやすいバージョンを提供し、変数名に直接アクセスできます。

方法

  1. String.Format プレースホルダーにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 挿入文字列に変換 を選択します。

Convert placeholder to interpolated string example

通常の文字列を挿入文字列に変換

内容: 通常の文字列を挿入文字列に変更します。

状況: コードを整理して読みやすくしたい場合に使用します。

方法

  1. 変換したい文字列にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 挿入文字列に変換 を選択します。

Convert to interpolated string before example

Convert to interpolated string after example

タプルを構造体に変換

内容: タプルを struct に変換します。

状況: タプルを素早く struct に変更し、複数回アクセスしたい固定データを持たせたい場合に使用します。

方法

  1. タプルにカーソルを置きます。

  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。

  3. 次のいずれかのオプションを選択します

    • struct に変換 -> 含むメンバー内の使用箇所を更新 を選択します
    • struct に変換 -> 含む型内の使用箇所を更新 を選択します
    • struct に変換 -> 含むプロジェクト内の使用箇所を更新 を選択します
    • struct に変換 -> 依存プロジェクト内の使用箇所を更新 を選択します

Convert tuple to  options

Convert tuple to  example

フィールドのカプセル化

内容: フィールドをプロパティに変換し、そのフィールドのすべての使用箇所を新しく作成されたプロパティを使用するように更新します。

状況: フィールドをプロパティに移動し、そのフィールドへのすべての参照を更新したい場合。

理由: 他のクラスにフィールドへのアクセスを許可したいが、それらのクラスに直接アクセスさせたくない場合。フィールドをプロパティでラップすることにより、たとえば、割り当てられる値を検証するコードを記述できます。

方法

  1. カプセル化するフィールドの名前にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 次のいずれかを選択します

フィールドのカプセル化: <フィールド名> (そしてプロパティを使用) を選択します。

Encapsulate field and use property example

フィールドのカプセル化: <フィールド名> (しかし、まだフィールドを使用) を選択します。

Encapsulate field but still use field example

比較演算子の生成

内容: IComparable を実装する型に対して比較演算子を生成できます。

状況: IComparable を実装する型がある場合、比較演算子を自動的に追加します。

理由: 値型を実装している場合、ValueTypeEquals メソッドの既定の実装よりもパフォーマンスを向上させるために、Equals メソッドをオーバーライドすることを検討する必要があります。

方法

  1. クラス内または IComparable キーワードにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. ドロップダウン メニューから 比較演算子を生成 を選択します。

既定のコンストラクターの生成

内容: クラスに新しい既定のコンストラクターのコードをすぐに生成できます。

状況: 新しい既定のコンストラクターを導入し、それを自動的に適切に宣言したい場合。

理由: コンストラクターを使用する前に宣言することもできますが、この機能は自動的に生成します。

方法

  1. クラス名にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. コンストラクター <クラス名>() を生成 を選択します。

Generate default constructor example

パラメーターの生成

内容: メソッドのパラメーターを自動的に生成します。

状況: メソッド内で現在のコンテキストに存在しない変数を参照してエラーが発生した場合、コード修正としてパラメーターを生成できます。

理由: コンテキストを失うことなく、メソッドのシグネチャを迅速に変更できます。

方法

  1. 変数名にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. パラメーターを生成 を選択します。

Generate parameter example

すべてのメンバーを明示的に実装

内容: インターフェースのメソッドをクラス内で明示的に定義します。明示的なインターフェース実装とは、指定されたインターフェースを通じてのみ呼び出されるクラス メンバーです。

状況: 次の場合に使用します

  • 複数のインターフェースに対して同じ実装が呼び出されるのを避けたい。
  • 2 つのインターフェースがそれぞれ同じ名前の異なるメンバー (プロパティとメソッドなど) を宣言している場合の問題を解決したい。

方法

  1. クラスで実装されているインターフェースにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. すべてのメンバーを明示的に実装 を選択します

Implement all members explicitly example

すべてのメンバーを暗黙的に実装

内容: インターフェースのメソッドをクラス内で暗黙的に定義します。暗黙的なインターフェース実装とは、インターフェースのメソッドとプロパティが public メソッドとしてクラスに直接追加されることです。

方法

  1. クラスで実装されているインターフェースにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. インターフェースの実装 を選択します

Implement all members implicitly

メソッドのインライン化

内容: メソッドのインライン化リファクタリング。

状況: 単一のステートメント本体内での静的メソッド、インスタンス メソッド、および拡張メソッドの使用を置き換えたい場合で、元のメソッド宣言を削除するオプションもあります。

理由: このリファクタリングは、より明確な構文を提供します。

方法

  1. メソッドの使用箇所にキャレットを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 次のいずれかのオプションから選択します

インライン メソッド宣言を削除するには、インライン <修飾メソッド名> を選択します

Inline method example

元のメソッド宣言を保持するには、インライン化して <修飾メソッド名> を保持 を選択します

Inline and keep method example

一時変数のインライン化

内容: 一時変数を削除し、その値で置き換えることができます。

状況: 一時変数の使用がコードを理解しにくくしている場合。

理由: 一時変数を削除することで、コードが読みやすくなる場合があります。

方法

  1. インライン化する一時変数の中にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 一時変数のインライン化 を選択します。

Inline temporary variable example

式に対してローカル変数を導入

内容: 既存の式を置き換えるためのローカル変数をすぐに生成できます。

状況: ローカル変数にすれば後で簡単に再利用できるコードがある場合。

理由: コードをコピー&ペーストしてさまざまな場所で使用することもできますが、一度操作を実行し、結果をローカル変数に格納し、そのローカル変数を全体で使用する方が良いでしょう。

方法

  1. 新しいローカル変数に割り当てたい式にキャレットを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 以下のオプションから選択します

ローカルの導入 -> <式> に対してローカルを導入 を選択します

Introduce local for expression example

ローカルの導入 -> <式> のすべての出現に対してローカルを導入 を選択します

パラメーターの導入

内容: 既存の式を置き換えるための新しいパラメーターをすぐに生成できます。

状況: パラメーターにすれば後で簡単に再利用できるコードがある場合。

理由: コードをコピー&ペーストしてさまざまな場所で使用することもできますが、一度操作を実行し、結果をパラメーターに格納し、そのパラメーターを全体で使用する方が良いでしょう。

方法

  1. 新しいパラメーターに割り当てたい式にキャレットを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 以下のオプションから選択します

<式> のパラメーターを導入 -> 呼び出し元を直接更新 を選択します

Update call sites directly example

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

Introduce parameter into extracted method example

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

Introduce parameter into new overload example

using ステートメントの導入

内容: IDisposable インスタンスに using ステートメント / コード ブロックを追加します。

状況: 正しく取得、使用、および破棄されることを保証したい IDisposable インスタンスがある場合。

方法

  1. 新しいパラメーターに割り当てたい式にキャレットを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. using ステートメントを導入 を選択します。

Introduce  statement example

条件式と論理演算の反転

内容: 条件式または条件付きの and \ or 演算子を反転できます。

状況: 反転した方が理解しやすい条件式または条件付きの and \ or 演算子がある場合。

理由: 式または条件付きの and \ or 演算子を手動で反転すると、時間がかかり、エラーを引き起こす可能性があります。このコード修正は、このリファクタリングを自動的に行うのに役立ちます。

方法

  1. 条件式または条件付きの and \ or 演算子にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 条件の反転 または &&|| に置換 を選択します

Invert conditional example

Replace  with  example

if の反転

内容: コードの意味を変えずに if または if else ステートメントを反転できます。

状況: 反転した方が理解しやすい if または if else ステートメントがある場合。

理由: if または if else ステートメントを手動で反転すると、時間がかかり、エラーを引き起こす可能性があります。このコード修正は、このリファクタリングを自動的に行うのに役立ちます。

方法

  1. if または if else ステートメントにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. if を反転 を選択します。

Invert  example

メンバーを静的にする

内容: メンバーを静的にします。

状況: 静的でないメンバーを静的にしたい場合。

理由: 静的メンバーは読みやすさを向上させます。特定のコードが分離されていることを知ることで、理解、再読、再利用が容易になります。

方法

  1. メンバー名にキャレットを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 静的にする を選択します。

Make member static example

宣言を参照の近くに移動

内容: 変数宣言をその使用箇所に近づけることができます。

状況: より狭いスコープにできる変数宣言がある場合。

理由: そのままにしておくこともできますが、読みやすさの問題や情報の隠蔽を引き起こす可能性があります。これは読みやすさを向上させるためのリファクタリングの機会です。

方法

  1. 変数宣言にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 宣言を参照の近くに移動 を選択します。

Move declaration near reference example

型を一致するファイルに移動

内容: 選択した型を同じ名前の別のファイルに移動できます。

状況: 同じファイルに複数のクラス、構造体、インターフェースなどがあり、それらを分離したい場合。

理由: 複数の型を同じファイルに配置すると、これらの型を見つけるのが困難になることがあります。型を同じ名前のファイルに移動することで、コードがより読みやすく、ナビゲートしやすくなります。

方法

  1. 定義されている型の名前にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 型を <型名>.cs に移動 を選択します。

Move type to matching file example

for ステートメントの逆順

内容: for ステートメントを反転できます。

状況: for ステートメントの意味とその反復方法を逆転させたい場合に使用します。

理由: for ステートメントを手動で反転すると、時間がかかり、エラーを引き起こす可能性があります。このコード修正は、このリファクタリングを自動的に行うのに役立ちます。

方法

  1. for ステートメントにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. for ステートメントを逆順にする を選択します。

Reverse  statements example

if ステートメントの分割またはマージ

内容: if ステートメントを分割またはマージします。

状況: && または || 演算子を使用する if ステートメントをネストした if ステートメントに分割したい場合、または if ステートメントを外側の if ステートメントとマージしたい場合。

理由: これはスタイルの好みの問題です。

方法

if ステートメントを分割したい場合

  1. && または || 演算子の近くの if ステートメントにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. ネストした if ステートメントに分割 を選択します。

Split into nested  statements example

内側の if ステートメントを外側の if ステートメントとマージしたい場合

  1. 内側の if キーワードにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. ネストした if ステートメントとマージ を選択します。

Merge with nested  statements example

明示的な型を使用

内容: このリファクタリングを使用して、ローカル変数宣言の var を明示的な型に置き換えます。

理由: コードの読みやすさを向上させるため、または宣言で変数を初期化したくない場合。

ただし、変数が匿名型で初期化され、オブジェクトのプロパティが後でアクセスされる場合は、var を使用する必要があります。詳細については、「暗黙的に型指定されたローカル変数 (C#)」を参照してください。

方法

  1. var キーワードにキャレットを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. var の代わりに明示的な型を使用 を選択します。

Use explicit type instead of  example

暗黙的な型を使用

内容: このリファクタリングを使用して、ローカル変数宣言の明示的な型を var に置き換えます。

理由: 個人のコーディング規約に合わせるため、また表示されるコードを減らすためです。変数が匿名型で初期化され、オブジェクトのプロパティが後でアクセスされる場合は、Var を使用する必要があります。詳細については、「暗黙的に型指定されたローカル変数 (C#)」を参照してください。

方法

  1. 明示的な型のキーワードにキャレットを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 暗黙的な型を使用 を選択します。

Use implicit type example

ラムダ式またはブロック本体を使用

内容: ラムダ式をリファクタリングして、式本体またはブロック本体を使用するようにします。

状況: ラムダ式に式本体またはブロック本体のいずれかを使用したい場合。

理由: ラムダ式は、ユーザーの好みに応じて読みやすさを向上させるためにリファクタリングできます。

方法

  1. ラムダ演算子の右側にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 次のいずれかを選択します

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

Use block body for lambda expressions example

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

Use expression body for lambda expressions

再帰的なパターンを使用

内容: コード ブロックを再帰的なパターンを使用するように変換します。このリファクタリングは、switch ステートメント、プロパティ パターン マッチング、タプル パターン マッチング、および位置指定パターン マッチングで機能します。

状況: 再帰的なパターンを使用すると、コードがより読みやすく/きれいになる場合があります。

方法

  1. 再帰的なパターンに変換したい式にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 次のいずれかを選択します

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

Convert  statement to expression example

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

Use recursive patterns before example

Use recursive patterns after example

折り返し、インデント、および配置のリファクタリング

呼び出しチェーンの折り返しと配置

内容: メソッド呼び出しのチェーンを折り返して配置できます。

状況: 1 つのステートメントに複数のメソッド呼び出しからなる長いチェーンがある場合。

理由: 長いリストは、ユーザーの好みに応じて折り返されたりインデントされたりすると読みやすくなります。

方法

  1. いずれかの呼び出しチェーンにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. リファクタリングを受け入れるには、呼び出しチェーンを折り返す または 呼び出しチェーンを折り返して配置 を選択します。

Wrap and align call chain example

パラメーターまたは引数の折り返し、インデント、および配置

内容: パラメーターまたは引数を折り返し、インデントし、配置できます。

状況: 複数のパラメーターまたは引数を持つメソッド宣言または呼び出しがある場合。

理由: パラメーターまたは引数の長いリストは、ユーザーの好みに応じて折り返されたりインデントされたりすると読みやすくなります。

方法

  1. パラメーター リストにカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. 以下のオプションから選択します

すべてのパラメーターを折り返す -> 折り返したパラメーターを配置 を選択します

Align wrapped parameters example

すべてのパラメーターを折り返す -> すべてのパラメーターをインデント を選択します

Indent all parameters example

すべてのパラメーターを折り返す -> 折り返したパラメーターをインデント を選択します

Indent wrapped parameters example

二項式の折り返し

内容: 二項式を折り返すことができます。

状況: 二項式がある場合。

理由: 二項式は、ユーザーの好みに合わせて折り返すと読みやすくなります。

方法

  1. 二項式にカーソルを置きます。
  2. クイック アクションとリファクタリング メニューをトリガーするには、⌘. (Windows, Linux Ctrl+.) を押します。
  3. リファクタリングを受け入れるには、式を折り返す を選択します。

Wrap expression example