ReSharper 2024.3 ヘルプ

シグネチャーの変更リファクタリング

このリファクタリングは、メソッド、コンストラクター、プロパティ、インデクサーのシグネチャーに加えることができるいくつかの変更を組み合わせたものです。ReSharper は、宣言内のシグネチャーを変更するとともに、現在のソリューションで変更されたシンボルのすべての使用箇所、ベースシンボル、実装、オーバーライドを検出して更新します。

適用される変更

このリファクタリングを使用すると、次の変更を行うことができます。

変更 / シンボル

メソッド

プロパティ

コンストラクター

インデクサー

名前の変更

Modification is applicable

Modification is applicable

Modification is applicable

戻り値の型を変更する

Modification is applicable

Modification is applicable

パラメーターの名前と型を変更する

Modification is applicable

Modification is applicable

Modification is applicable

パラメーターの追加または削除

Modification is applicable

Modification is applicable

Modification is applicable

パラメーターの並べ替え

Modification is applicable

Modification is applicable

Modification is applicable

コマンドでリファクタリングを呼び出す

  1. エディターでメソッド、プロパティ、コンストラクター、インデクサーの宣言または使用箇所にキャレットを置くか、ファイル構造ウィンドウウィンドウで選択します。

  2. 以下のいずれか 1 つを実行します:

    • Control+F6 を押します。

    • Alt+Enter を押して、シグネチャーの変更を選択します。

    • Control+Shift+R を押し、シグネチャーの変更を選択します。

    • 右クリックして、コンテキストメニューからリファクタリング | シグネチャーの変更を選択します。

    • メインメニューから ReSharper | リファクタリング | シグネチャーの変更…を選択します。

    シグネチャーの変更ダイアログが開きます。

  3. 名前フィールドにシンボルの新しい名前を入力します。必要に応じて、戻り値の型フィールドでメソッドの戻り値の型を変更します。

  4. パラメーター領域では、既存のパラメーターの型、名前、修飾子、デフォルト値を編集します。必要に応じて、追加および除去ボタンを使用してパラメーターを作成または削除します。上へ移動下へ移動をクリックしてパラメーターを並べ替えます。

  5. 関数の使用箇所を変更したくない場合は、ReSharper は既存の宣言をそのままにして、新しい宣言内で関数を呼び出すことができるため、既存の使用箇所を変更しないで済みます。これを行うには、呼び出しセレクターでオーバーロードメソッドによる委譲を選択します (詳細については、「呼び出しを更新せずにシグネチャーを変更する」を参照してください)。

  6. プレビューフィールドで新しい署名を確認します。

  7. リファクタリングを適用するには、次へをクリックします。

  8. パラメーターを追加した場合、ReSharper は関数の呼び出しを修正するいくつかの方法を提案します。呼び出しのコードをコンパイル不可のままにするか、すべての呼び出しに「null」または特定の値を使用するか、呼び出しダイアグラムを使用して値を選択するかを選択できます。特定の呼び出しを個別に呼び出します (詳細については、「コールダイアグラムによるコールの更新 (プッシュ / プルパラメーターツール)」を参照してください)。

  9. 競合が見つからない場合、ReSharper はすぐにリファクタリングを実行します。それ以外の場合は、競合を解決するように求められます。

ReSharper Change Signature wizard

呼び出しを更新せずにシグネチャーを変更する

リファクタリングウィザードの呼び出しセレクタでオーバーロードメソッドによる委譲を選択した場合、ReSharper は既存の宣言を残し、新しい宣言内で呼び出すため、既存の用途は変更しません。

継承階層から関数を変更する場合、このオプションは使用できないことに注意してください。

例: メソッド public string Foo(string s, int x) の名前と並べ替えられたパラメーターを変更した場合、ReSharper は次のコードを作成します:

public string Foo(string s, int x) { return String.Format("'{0}': {1} times", s, x); } public void Test() { Foo("test", 10); }
public string Bar(int x, string s) { return String.Format("'{0}': {1} times", s, x); } public void Test() { Bar(10, "test"); }
public string Foo(string s, int x) { return String.Format("'{0}': {1} times", s, x); } public void Test() { Foo("test", 10); }
public string Foo(string s, int x) { return Bar(x, s); } public string Bar(int x, string s) { return String.Format("'{0}': {1} times", s, x); } public void Test() { Foo("test", 10); }

リファクタリングをインプレースで実行する

関数のシグネチャーを変更するには、エディターでその宣言権を変更し、クイックフィックスを適用してソリューション全体のリファクタリングを呼び出します。

たとえば、メソッドのパラメーターを並べ替えると、メソッドシグネチャーの周囲に灰色の境界線が表示され、リファクタリングが利用可能であることを通知します。Alt+Enter を押すと、アクションリストでリファクタリングを見つけることができます。

Applying the Change Signature refactoring inline

クイックフィックスを適用すると、メソッドシグネチャーの変更がダイアログに表示されます。

Applying the Change Signature refactoring inline

次へをクリックすると、ソリューション全体に変更を適用できます。

また、関数の呼び出しのいずれかに新しい引数を 1 つ追加するときに、シグネチャーの変更リファクタリングを適用することもできます。この場合、ReSharper は誤った呼び出しを検出し、ハイライトし、対応するクイックフィックスを提案します。

Applying the Change Signature refactoring inline from a method usage

このクイックフィックスは、リファクタリングを起動し、関数の宣言とそのすべての使用箇所をソリューション全体で更新します。必要に応じて、ReSharper はそれぞれの特定の呼び出しの値を個別に選ぶために呼び出しダイアグラムを表示します

コールダイアグラムによるコールの更新 (プッシュ / プルパラメーターツール)

関数シグネチャーを変更して新しいパラメーターを追加する場合、ReSharper は関数呼び出しを更新するいくつかの方法を提供します。すべてのコールに 'null' または定数値を使用することに加えて、コールの視覚的表現を使用して個々のコールを更新することができます。

ウィザードを使用してリファクタリングを実行する場合は、ウィザードの最後のページでコールツリーで解決するを選択し、次へをクリックします。更新された関数呼び出しのクイックフィックスからリファクタリングを実行すると、変更された関数のすべての呼び出しを含むツールウィンドウが自動的に開きます。

Change signature - updating calls with call diagram

このビューでは、影響を受けたコールを確認して、クリックしてエディターでそれらのコールを見つけることができます。コールごとに、新しく追加したパラメーターの値を取得する方法を選択するか、ユーザーの編集を選択して手動でコールを編集します。

異なる言語での適用性

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

ここで説明する手順と例では、C# の機能の使用について説明します。他の言語の詳細については、言語およびフレームワークセクションの対応するトピックを参照してください。

関連ページ:

Rename リファクタリング

このリファクタリングにより、ソリューション内の任意のシンボルまたはプロジェクトの名前を変更できます。シンボルへの参照および使用箇所はすべて自動的に更新されます。さまざまな C# エンティティにリファクタリングを使用する:これは、このリファクタリングで名前を変更できるエンティティのリストです。名前空間また、名前空間のネストレベルを変更することもできます。例: 名前空間をに変更できます。タイプ名前が変更された型が同じ名前のファイルにある場合、ReSharper は含まれているファイルの名前も変更し...

変換パラメーターリファクタリング

このリファクタリングは、パラメーターを変換することにより、メソッドシグネチャーをすばやく変更できます。たとえば、パラメーターを削除したり、タプルまたは新しいクラスにパラメーターをラップしたりします。 — そして、ソリューション内のメソッドのすべての使用箇所を自動的に更新します。リファクタリングでは、次の変換を実行できます。選択したパラメーターに対応する型のパブリックフィールドまたは自動プロパティを持つ新しいクラスを作成し、パラメーターの代わりに新しく作成したクラスを使用します。パラメーターをタプ...

構造別にファイルを移動する

ファイル構造ウィンドウ:ReSharper では、ファイル構造ウィンドウを使用して現在のドキュメントの構造を移動でき、大きなファイルでのナビゲーションが大幅に簡素化されます。ウィンドウはエディターと同期されます。別のエディタータブに切り替えると、ウィンドウには対応するファイルの構造が表示されます。ファイル構造ウィンドウを開いて使用するを押すか、メインメニューからを選択します。あるいは、を押して、ポップアップでコマンド名を入力して、そこで選択することもできます。現在のドキュメントの内容はツリー

リファクタリングの競合を解決する

ReSharper のすべてのリファクタリングはソリューション全体に適用されるため、多くのファイルが影響を受ける可能性があり、一部の変更は既存のコードと競合する可能性があります。競合がある場合、ReSharper はそれらを検出し、リファクタリングウィザードの最後のページに競合のリストを表示します。例: 安全な削除リファクタリングをメソッドに適用するときに表示されるいくつかの競合を次に示します。競合には 2 つの型があります。コンパイルを中断することなく削除できる使用箇所は、アイコンでマークされて...

コードの問題のクイックフィックス

ReSharper を使用すると、設計時に検出されたほとんどのコード問題を即座に修復できます。ハイライトされたコードの問題でを押して、問題を解決したり最適以下のコードを改善したりするための適切な方法を選択するのと同じくらい簡単です。クイックフィックスの適用:クイックフィックスは、ハイライトされたコードの問題の左側にアクションインジケーターとして視覚的に表示されます。これらのインジケーターは、コードの問題にキャレットを置くと表示されます。次のインジケーターは、簡単な修正を意味します。エラー重大

アクションインジケーターとアクションリスト

ReSharper が Visual Studio テキストエディターに追加する最も注目すべきものの中には、アクションインジケータとアクションリストがあります。これらは、ReSharper でサポートされているすべてのファイル(C#、VB.NET、XML、CSS、JavaScript、ASP.NET など)に表示され、使用可能なアクションについて通知し、適用できます。アクションインジケータ:アクションインジケーターは、設定に応じて、アクションバー、テキストエディターの左マージンおよび / また...