如果我没有明确提供可选参数,为什么Resharper会说“Arguments Mismatch”?

时间:2014-05-22 16:10:21

标签: resharper optional-parameters default-arguments

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

以下代码段

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

在Debug和Release配置中编译并运行良好。但是,如果调试配置在Visual Studio中处于活动状态,则Resharper会强调我传递给Analytics构造函数的参数,并显示“Arguments Mismatch”。它没有提供解决问题的选项,因为它认为这是一个错误,而不是警告,它不提供抑制它。如果我添加第三个参数,为true,那么它就完全开心了。构造函数的第三个参数的默认值为true,因此不必显式传递它。当然,这对我来说没有问题,但我对Resharper的行为感到困惑。

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

Resharper版本是7.1.3完整版。

2 个答案:

答案 0 :(得分:0)

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

enter image description here

答案 1 :(得分:0)

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

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

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