相关疑难解决方法(0)

为什么在尝试调用采用动态参数的基础构造函数/方法时会出现此编译错误?

在重构一些代码时,我遇到了这个奇怪的编译错误:

构造函数调用需要动态调度,但不能因为它是构造函数初始值设定项的一部分.考虑转换动态参数.

当尝试调用采用动态参数的基本方法/构造函数时,似乎会发生这种情况.例如:

class ClassA
{
    public ClassA(dynamic test)
    {
        Console.WriteLine("ClassA");
    }
}

class ClassB : ClassA
{
    public ClassB(dynamic test)
        : base(test)
    {
        Console.WriteLine("ClassB");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我将参数转换为object,它会起作用,如下所示:

public ClassB(dynamic test)
    : base((object)test)
Run Code Online (Sandbox Code Playgroud)

所以,我有点困惑.为什么我必须把这个令人讨厌的演员 - 为什么编译器不能弄明白我的意思?

.net c# compiler-construction dynamic c#-4.0

46
推荐指数
1
解决办法
4731
查看次数

标签 统计

.net ×1

c# ×1

c#-4.0 ×1

compiler-construction ×1

dynamic ×1