我很困惑,为什么这不会运行。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Buyer : User
{
public void AuctionWon()
{
}
}
}
我得到“不包含带0参数的构造函数”。我已经手头搜索过帮助,但没有结果有帮助。
这是用户类
public class User
{
private int accountNo;
private int password;
public User(int accountNo, int password)
{
this.accountNo = accountNo;
this.password = password;
}
public bool Validatepassword(int userpassword)
{
if (password == userpassword)
{
return true;
}
else
{
return false;
}
}
public int GetAccountNo()
{
return accountNo;
}
}
答案 0 :(得分:12)
看起来你的基类(User
类)没有任何有0个参数的构造函数。
您的用户类有一个类似的构造函数:
public class User
{
public User(int accountNo, int password)
{
this.accountNo = accountNo;
this.password = password;
}
}
和买方必须像以下一样继承:
public class Buyer : User
{
public Buyer(int accountNo, int password) : base(accountNo, password)
{
}
public void AuctionWon()
{
}
}
答案 1 :(得分:2)
如果基类(User)的构造函数至少有一个参数,但没有没有参数的构造函数,则会发生此错误。
所以这没关系:
class User
{
}
class Buyer : User
{
public void AuctionWon()
{
}
}
因为用户没有任何构造函数,所以编译器会自动为您创建一个带有0参数的默认“隐藏”构造函数。
但是这会导致你看到的错误(“'用户'不包含带'0'参数的构造函数”):
class User
{
public User(string text)
{
}
}
class Buyer : User
{
public void AuctionWon()
{
}
}
因为User现在有一个显式的构造函数,所以编译器不会创建0个参数的默认构造函数。您可以向User添加一个0参数构造函数,但在这种情况下,User类的设计者通常会调用User构造函数并提供适当的参数,例如,
class User
{
public User(string text)
{
}
}
class Buyer : User
{
public Buyer() : base("Adam")
{
}
public void AuctionWon()
{
}
}
我们现在已经向Buyer添加了一个构造函数,该构造函数调用现有的User构造函数,并为其提供适当的参数。
答案 2 :(得分:0)
运行程序时,这是你得到的错误
'ConsoleApplication3.User' does not contain a constructor that takes 0 arguments
此消息可以解释为User
类中没有无参数构造函数。
在User类中添加无参数构造函数(如果它可编辑而不在某些dll中,否则不可能),如
public User()
{}
或强>
如果用户包含带参数的构造函数,请像这样使用
public class Buyer : User
{
public Buyer() : base(FooBar)
{
}
}
答案 3 :(得分:0)
我怀疑你的User
类不包含没有参数的构造函数。因此,在构造Buyer
的实例时,不知道如何构造基类。
为了解决它:在Buyer
类中创建一个空构造函数,让它从基类(User
)调用构造函数。