【问题标题】:Why does Resharper say "Arguments Mismatch" if I don't explicitly supply optional parameter?如果我没有明确提供可选参数,为什么 Resharper 会说“参数不匹配”?
【发布时间】:2014-05-22 16:10:20
【问题描述】:

我的项目使用 .Net 4.0 客户端。

以下代码sn-p

#if DEBUG
    string key = "pldi6z3n3vfz23czhano";
#else
    string key = "bh7aaqmlmd0bhd48g3ye";
#endif
    using (new Analytics(key, userInfo))...

在调试和发布配置中都能正常编译和运行。但是,如果调试配置在 Visual Studio 中处于活动状态,Resharper 会在我传递给 Analytics 构造函数的参数下加红色下划线并显示“参数不匹配”。它没有提供解决问题的选项,并且由于它认为这是一个错误,而不是警告,所以它不提供抑制它。如果我添加第三个参数,true,那么它是完全高兴的。构造函数的第三个参数的默认值为 true,因此不必显式传递它。当然,这样做对我来说没有问题,但我对 Resharper 的行为感到困惑。

如果重要的话,Analytics 类来自 John Hatton 创建的 DesktopAnalytics 版本 1.0.1(使用 NuGet 下载)。

Resharper 版本为 7.1.3 完整版。

【问题讨论】:

  • 当 ReSharper 给出红色波浪线“参数不匹配”时,该方法的参数信息说明了什么?是不是认为Analytics的构造函数有不同的参数?
  • 我有 7.1.3 并没有看到您遇到的问题。正如您在下面提到的,这听起来像是一个缓存问题。

标签: resharper optional-parameters default-arguments


【解决方案1】:

这对使用 Resharper 8.0 的我来说可以正常工作 - 我确实记得 R# 在早期版本中没有很好地处理预处理器指令 - 因此它可能已经修复了。通过将 key 声明移到预处理器指令之外,它可能会在您的版本中得到修复(这是一个疯狂的猜测)

【讨论】:

  • 试过了。没有骰子。升级到 Resharper 8.2.1,问题依旧。我认为 Resharper 缓存了来自 DesktopAnalytics DLL 以前版本的信息,但清除 Resharper 缓存并不能解决问题,这可能是一个问题。
  • @TomBogle 你是如何清除 R# 缓存的?您可能还想完全删除文件夹 - 例如C:\Users\wal\AppData\Local\JetBrains\ReSharper\v7.1
  • 我刚刚在 VS 的 Resharper 选项页面上使用了 Clear Caches 按钮。刚刚尝试了您的想法,但没有解决问题。
【解决方案2】:

遇到了同样的问题。我尝试从 UI 中清除缓存并删除文件夹。重新启动重新加载解决方案(多次)其他类似项目都很好。

我没有术语,但有两个属性设置区域。一个显示为一个大对话框。带有应用程序、构建、构建事件、调试等选项卡。当我在解决方案资源管理器中左键单击项目文件时,会显示另一个。它有 6 个名称-值选项。第一个是“C# 语言级别”,它以某种方式设置为 C# 3.0(不支持可选参数)。将其设置为 C# 4.0 解决了所有问题。注意我正在为 .Net Framework 4.0 构建 x86。我正在运行一个匹配的 NUnit。

无论如何,这个改变解决了我的问题。我不知道这是怎么发生的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-17
    • 2013-11-04
    • 2022-12-17
    • 2021-12-06
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多