ReSharper强调了nameof与“;传递给具有调用者信息属性“”的参数的显式参数;

本文关键字:参数 调用者 属性 信息 nameof ReSharper | 更新日期: 2023-09-27 18:06:45

我使用函数的名称来获得字符串形式的属性名称,因此:

public bool IsRunning => ...;
...
RaisePropertyChanged(nameof(IsRunning));

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

显式参数传递给具有调用方信息属性的参数

代码是有效的,我只是想知道上面的警告是否是我应该担心的。

ReSharper强调了nameof与“;传递给具有调用者信息属性“”的参数的显式参数;

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

当您附加了CallerMemberName属性时,您不必显式传递值,因为该属性将完全为您传递值。它会找到调用方的名称并使用它,从而使nameof声明变得多余。当然,这是假设您从实际的属性实现中调用RaisePropertyChanged

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

只要您的代码是从IsRunning属性调用的(这使警告有效。在这种情况下,指定属性名称将是多余的(。你好像没有那样做。

警告只是告诉您RaisePropertyChanged在属性上设置了CallerMemberNameAttribute,它应该这样做。忽视是安全的。