C# 为什么将动态参数重新处理为params参数无法生成

C# 为什么将动态参数重新处理为params参数无法生成,c#,dynamic,params-keyword,C#,Dynamic,Params Keyword,当将动态参数重新分配给带有params关键字的方法时,解决方案无法生成,我使用的是.NET 4.6和VS2015,但在以前版本的.NET Framework中也会出现此问题。错误列表上没有生成错误,只在底部显示一条“构建失败”消息 这是我尝试运行的示例代码: public void MethodWithDynamicParameter(dynamic dyn) { MethodWithParams(dyn); //This fails to build! MethodWithP

当将动态参数重新分配给带有params关键字的方法时,解决方案无法生成,我使用的是.NET 4.6和VS2015,但在以前版本的.NET Framework中也会出现此问题。错误列表上没有生成错误,只在底部显示一条“构建失败”消息

这是我尝试运行的示例代码:

public void MethodWithDynamicParameter(dynamic dyn)
{
    MethodWithParams(dyn); //This fails to build!

    MethodWithParams(new object[] { dyn }); //This compiles!
}

public void MethodWithParams(params object[] objects)
{

}
有人能解释一下第一个电话是怎么回事吗

编辑1:

我用Dave提供的示例创建了一个新的解决方案,它构建起来没有任何问题。但在我的解决方案中,即使在“关闭、清洁和构建”之后,问题仍然存在。我是否传递字符串、对象、动态或任何其他内容都无关紧要。在下图中,没有对方法的调用,解决方案仍然没有生成


我使用以下代码创建了一个新的控制台应用程序作为测试:

class Program
{
    static void Main(string[] args)
    {
        // Test with object:
        object x = new object();
        MethodWithDynamicParameter(x);

        // Test with specific type of object, a string:
        MethodWithDynamicParameter("string");

        Console.ReadKey();
    }

    static void MethodWithDynamicParameter(dynamic dyn)
    {
        MethodWithParams(dyn);
        MethodWithParams(new object[] { dyn });
    }

    static void MethodWithParams(params object[] objects)
    {

    }
}
对我来说,这个程序编译和运行都没有错误

如果您还没有尝试过,我可以推荐标准的“关闭所有文档、全部清理、全部重建”和/或“重新启动Visual Studio”解决方案吗



此外,它们
dynamic
关键字可能是问题的根源,因为它在编译时之前绕过了许多类型检查。在调用
MethodWithDynamicParameter(dynamicdyn)

之前,请尝试从声明
dyn
的位置检查您的代码,它们都是为我编译的-您希望
dyn
是一个参数集合还是一个参数?@DStanley实际上它是一个值,但在解决方案中,它无法使用任何提供的参数进行编译:字符串、对象、动态或对象数组您绝对确定这不是编译吗?奇怪的是,除了“构建失败”之外,您没有收到任何消息。您是否有任何单元测试或任何与生成过程相关的内容?您的编辑证明了语法在编译时是有效的,因此必须有其他内容阻止生成。根据帖子的当前状态,这样做无法帮助您。你必须调查你自己。如果你想出一个更新的帖子,这样有人可以回答。如果你发现根本原因-考虑张贴自我回答(如果它不是原来是无关的错误),也有一些关于<代码>动态< /COD>关键字。