ReSharper 2025.2 Help

将方法转换为索引器的重构

此重构可帮助您将访问集合的方法转换为索引器,并相应地更新方法的用法。 您可以将其应用于:

  • 具有返回值和一个或多个参数的方法,将其转换为具有相同参数集的索引器的 get 访问器。

  • 具有 void 返回类型和两个或多个参数的方法(其中最后一个参数应为值,其他参数表示索引),将其转换为索引器的 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]); } }

如果仅存在一个访问器的索引器,且转换的方法适合,重构将尝试添加第二个访问器:

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# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。

最后修改日期: 2025年 9月 27日