ReSharper 2024.3 ヘルプ

メソッドをインデクサーに変換リファクタリング

このリファクタリングは、コレクションにアクセスするメソッドをインデクサに変換し、それに応じてメソッドの使用方法を更新できます。それを以下に適用することができます:

  • 戻り値と 1 つ以上のパラメーターを使用して、同じパラメーターセットを持つインデクサの get アクセサーに変換するメソッド。

  • void の戻り値の型と 2 つ以上のパラメーター(最後は値であると予想され、その他はインデックスを表す)を使用してインデクサの set アクセサーに変換するメソッド。

次の例を考えてみましょう。インデクサーが存在しない場合は、リファクタリングによって作成されます。

class TestBookLibrary { Book[] _books; Book GetBookAt(int index) { return _books[index]; } void Insert(int index, Book book) { _books[index] = book; } void Copy(int copy, int to) { Insert(to, GetBookAt(copy)); } }
class TestBookLibrary { Book[] _books; Book this[int index] { get { return _books[index]; } } void Insert(int index, Book book) { _books[index] = book; } void Copy(int copy, int to) { Insert(to, this[copy]); } }

アクセサーを 1 つだけ持つインデクサーが存在する場合、変換されたメソッドが適合する場合、リファクタリングは 2 番目のアクセサーを追加しようとします。

class TestBookLibrary { Book[] _books; Book this[int index] { get { return _books[index]; } } void Insert(int index, Book book) { _books[index] = book; } void Copy(int copy, int to) { Insert(to, this[copy]); } }
class TestBookLibrary { Book[] _books; Book this[int index] { get { return _books[index]; } set { _books[index] = value; } } void Copy(int copy, int to) { this[to] = this[copy]; } }

メソッドをインデクサーに変換する

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

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

    • Control+Shift+R を押し、メソッドをインデクサーに変換を選択します。

    • 右クリックして、コンテキストメニューからリファクタリング | メソッドをインデクサーに変換を選択します。

    • メインメニューから ReSharper | リファクタリング | 変換 | インデクサーへの方法 ... を選択します。

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

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

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

関連ページ:

インデクサーをメソッドに変換リファクタリング

このリファクタリングは、インデクサの一方または両方のアクセサーをメソッドに変換し、それに応じて現在のソリューションのインデクサの使用状況を更新できます。以下の例では、ReSharper はインデクサの getter と setter のアクセサーを変換して使い方を更新します:class BookLibrary { private Book[] books = new Book[1000]; public Book this[int index] { get => books[index];...

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

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

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

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

さまざまな言語の ReSharper 機能

以下の表は、各 ReSharper 機能がサポートされている言語 / テクノロジーを説明しています。これらは言語固有の機能のみをリストし、プロジェクト依存関係ダイアグラム、名前空間の調整リファクタリング、スタックトレースエクスプローラーなどのプロジェクト / ソリューションスコープの多くの機能を含まず、最近のファイルを表示します。コード解析:コードインスペクション

ASP.NET MVC 特有の機能

ReSharper には、一般的な ASP.NET 機能に加えて、ASP.NET MVC での作業をより簡単にサポートする特殊機能があります。構文のハイライト:ASP.NET MVC メソッド呼び出しとパラメーターの特別な構文のハイライト: コード補完:文字列リテラルでアクションとコントローラーを参照するための専用コード補完: ナビゲーションと検索:さまざまなナビゲーション機能がアクションとコントローラーでも機能します。コード生成:使用箇所から新しいコントローラーとアクションを作成する: 最終...

言語による ReSharper: MSBuild

MSBuild は、アプリケーションを構築するために広く使用されているプラットフォームです。特定の XML タグを使用して、プロジェクトの構築方法や実行方法を定義できます。ReSharper を使用すると、より速く行うことができます。コード検査:あらかじめ定義された要素またはその属性の名前を誤って入力した場合、ReSharper はそのような不一致についてハイライト表示します。まだ定義されていないプロパティを参照しようとすると、ReSharper はそのようなケースも検出します。MSBuild...