ReSharper 2026.1 Help

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

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

  • 戻り値と 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. 次のいずれかを実行します。

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

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

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

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

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

言語: C#

言語: VB.NET

言語: C++

言語: ASP.NET

言語: Razor

言語: XAML

言語: Resx

言語: スクリプトの作成

言語: SQL

この機能は C# で利用可能です

この機能は Visual Basic で利用可能です

この機能は C++ では使用できません

この機能は ASP.NET では使用できません

この機能は Razor では使用できません

機能は XAML では使用できません

機能はリソースファイルでは使用できません

機能はビルドスクリプトファイルでは使用できません

機能は SQL/NoSQL ファイルおよびインジェクションでは利用できません

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

2026 年 6 月 12 日