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添加构造函数,你有完整的基类代码吗?你能把它复制到这里吗?