Resharper强调使用nameof"使用调用者信息属性传递给参数的显式参数"

Tim*_*ter 27 c# c#-6.0 resharper-9.0 nameof

我使用nameof函数将属性名称作为字符串,因此:

public bool IsRunning => ...;

...
RaisePropertyChanged(nameof(IsRunning));
Run Code Online (Sandbox Code Playgroud)

Resharper通过警告强调了这一点:

使用调用者信息属性传递给参数的显式参数

代码工作,我只是想知道上面的警告是否是我应该担心的事情.

Yuv*_*kov 23

只是想知道上面的警告是否是我应该担心的事情.

当你CallerMemberName属性附加,你不必明确地传递值,因为该属性将做正是你.它将找到呼叫者姓名并使用它,使您的nameof声明多余.这当然假设您RaisePropertyChanged从实际的属性实现调用.

当您显式传递字符串文字时, ReSharper将这些调用标记为冗余.它也应该强制使用相同的逻辑nameof.

  • 这是愚蠢的,因为它不会检查名称是否与当前作用域不同,所以当我明确调用另一个属性时,它没有发现它. (4认同)
  • 在文件中,您可以在顶部添加:`// ReSharper禁用ExplicitCallerInfoArgument`并且仅在调用上方的行上添加一次:`// ReSharper禁用一次ExplicitCallerInfoArgument` (2认同)