R# 能否找到在某个默认参数中显式传递值的方法的所有调用?

Can R# find all the invocations of a method which pass a value explicitly in a certain default parameter?

例如,假设我有以下方法:

void f(int x, string y = null)
{ ... }

R# 能帮我找到所有用两个显式参数调用 f 的地方吗?

我认为这无法通过标准的 Find Usages 获得,但我可以想到至少两种替代方法来查找使用两个显式参数的所有位置:

删除第二个参数

如果您暂时删除第二个参数,您将获得一个很好的编译错误列表,其中它尝试​​显式使用第二个参数(打开解决方案范围分析)在它们之间导航。

否则(如果由于某些原因无法修改代码)

使用 SSR(结构搜索和替换)查找

转到 ReSharper - 查找 - 使用模式搜索,然后创建以下模式:

$type$.f($args$)

其中 $type$ 是一个 表达式占位符 (可选,指定包含方法 f 的类型) $args$ 是一个 参数占位符 限制参数的最小数量 设置为 2

然后 运行 搜索,您应该只能看到显式调用:

这显然取决于使用量,但对于较小的集合,Value Tracking 也有帮助。

将插入符号放在可选参数上,然后使用 Ctrl+A​​lt+Shift +A​​(默认快捷方式),然后是 Value Origin.