Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#继承问题-不包含接受0个参数的构造函数_C#_Inheritance_Constructor - Fatal编程技术网

C#继承问题-不包含接受0个参数的构造函数

C#继承问题-不包含接受0个参数的构造函数,c#,inheritance,constructor,C#,Inheritance,Constructor,我已经阅读了其他一些相关的帖子,但我不认为我有和他们一样的问题。我相信我正在正确地为我继承的类构造构造函数,但是它仍然不起作用——甚至不会意识到我似乎有一个构造函数 class BlockedNumber : PhoneNumber { public BlockedNumber(string a, string m, string l) : base(a, m, l) { } } 这仍然给了我标题中的错误: “DTS.PhoneNumber不包含接受0个参数的构造函数

我已经阅读了其他一些相关的帖子,但我不认为我有和他们一样的问题。我相信我正在正确地为我继承的类构造构造函数,但是它仍然不起作用——甚至不会意识到我似乎有一个构造函数

class BlockedNumber : PhoneNumber
{
    public BlockedNumber(string a, string m, string l)
        : base(a, m, l) { }
}
这仍然给了我标题中的错误:

“DTS.PhoneNumber不包含接受0个参数的构造函数

我不知道为什么它不能正确识别我的构造函数。错误(VS12中的蓝色下划线)发生在第一次使用
BlockedNumber
时,就在
class
之后

有人知道它为什么不喜欢这样吗

class BlockedNumber : PhoneNumber
{
    public BlockedNumber(string a, string m, string l)
        : base(a, m, l) { }
}

internal class PhoneNumber
{
    public PhoneNumber(string a, string m, string l) { }
}

您的问题在其他地方。很可能您正在用0个参数在其他地方实例化一个
电话号码。

获取您拥有的并从VS2010生成一个类

internal class PhoneNumber
    {
        private string a;
        private string m;
        private string l;

        public PhoneNumber(string a, string m, string l)
        {
            // TODO: Complete member initialization
            this.a = a;
            this.m = m;
            this.l = l;
        }
    }

class BlockedNumber : PhoneNumber
{
    public BlockedNumber(string a, string m, string l)
        : base(a, m, l) { }
}

这段代码编译得很好,所以正如Yuriy所说,问题一定在其他地方。

很可能您的子类还有另一个无参数构造函数,您没有透露它,但是构造函数没有显式调用基类构造函数。因此,您假设它不相关。但是,C#向每个构造函数插入一个基类构造函数调用,因为这在CIL中是必需的。因此,另一个构造函数抱怨无法找到要调用的基类构造函数。

如果不直接指定
:base(x,y,z)
也就是说,要调用哪个父构造函数,编译器会尝试查找默认情况下不需要调用参数的父构造函数


这篇文章解释了-

创建
BlockedNumber
对象的代码是什么?因此,您会得到一个编译错误或“幻影设计器错误”"? 有时VS会使用旧文件进行自动完成,这很少见,但确实会发生,所以请尝试重新生成,看看问题是否仍然存在…你的意思是尝试执行
清理
然后执行
重新生成
不是吗..我建议为PhoneNumber hereHayden添加构造函数,你有完整的基类代码吗?你能把它复制到这里吗?