【问题标题】:Is this line of code too advanced for Resharper?这行代码对 Resharper 来说是不是太高级了?
【发布时间】:2015-02-04 05:26:24
【问题描述】:

几分钟前我在 C# 中整理了一些东西并编写了以下代码行:

private void ReportCheckState( String message , bool state ) {
            ( ( NovaEngineEditor )this.Parent ).EditorStatusBar.ShowMessage( ( message += state ? " Enabled." : " Disabled." ) );
        }

令我惊讶的是,Resharper 显然认为变量“消息”的附加不会用于任何执行路径。然而,事实并非如此。它已被使用并且按预期工作。那么我真的找到了比 Resharper 更聪明的方法吗?这是一个屏幕截图(注意灰色文本):

这是表单上显示的最终输出的图像;它确实可以正常工作!

【问题讨论】:

  • 好的,它确实工作正常,新字符串实际上已经形成,但是您没有在ReportCheckState 方法中的其他任何地方使用此值,所以您得到了您所得到的。
  • 将其更改为 + 而不是 +=+= 将值附加到字符串变量。由于您稍后不会在代码中使用此变量,因此它是多余的。
  • 你的代码应该是:message + (state ? " Enabled." : " Disabled.)" 编辑:@alexw:比我快 9 秒 ;p
  • 我猜 R# 试图说 + 的一部分 += 的结果是有用的,但赋值返回不是(在你的代码中就是这种情况 - 你从不使用 @987654331 的值稍后@自己)
  • @alexw 好的,我明白了。所以这不是一个错误。该死的,我有点印象深刻。 =P

标签: c# resharper-9.0


【解决方案1】:

让我们分解代码

message += state ? " Enabled." : " Disabled."

相同

message = message + (state ? " Enabled." : " Disabled.");

分配是多余的,因为您不再使用 message 变量。

你真的想要

message + (state ? " Enabled." : " Disabled.");

【讨论】:

  • @TyCobb 必须强制转换语句才能使其工作。
猜你喜欢
  • 2011-10-17
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
相关资源
最近更新 更多