メソッドをインデクサーに変換リファクタリング
このリファクタリングは、コレクションにアクセスするメソッドをインデクサに変換し、それに応じてメソッドの使用方法を更新できます。 それを以下に適用することができます:
戻り値と 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];
}
}
メソッドをインデクサーに変換する
エディターでメソッドの宣言または使用箇所にキャレットを置くか、 ファイル構造ウィンドウウィンドウで選択します。
次のいずれかを実行します。
Control+Shift+R を押し、を メソッドをインデクサーに変換 を選択します。
右クリックして、コンテキストメニューから リファクタリング | メソッドをインデクサーに変換 を選択します。
メインメニューから を選択します。
競合するものが見つからない場合、ReSharper はすぐにリファクタリングを実行します。 それ以外の場合は、 競合を解決するように求められます。
この機能は、次の言語とテクノロジーで サポートされています。
ここで説明する手順と例では、C# の機能の使用について説明します。 他の言語の詳細については、 言語およびフレームワーク セクションの対応するトピックを参照してください。
2026 年 6 月 12 日