类不包含带0个参数的构造函数
本文关键字:构造函数 参数 0个 包含带 | 更新日期: 2023-09-27 18:04:36
我很困惑为什么这不会运行。
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;
}
}
似乎你的基类(User
类)没有任何有0个参数的构造函数。
你的用户类有一个类似于
的构造函数:public class User
{
public User(int accountNo, int password)
{
this.accountNo = accountNo;
this.password = password;
}
}
和Buyer必须像
一样继承: public class Buyer : User
{
public Buyer(int accountNo, int password) : base(accountNo, password)
{
}
public void AuctionWon()
{
}
}
如果基类(User)有至少接受一个参数的构造函数,但没有没有参数的构造函数,则会发生此错误。
输入
class User
{
}
class Buyer : User
{
public void AuctionWon()
{
}
}
因为user没有任何构造函数,编译器会自动为你创建一个默认的带有0个参数的"隐藏"构造函数。
但是这会导致你看到的错误("'User'不包含接受'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构造函数,并为其提供一个适当的参数。
我怀疑您的User
类不包含没有参数的构造函数。因此,在构造Buyer
的实例时,不知道如何构造基类。
为了解决这个问题:在你的Buyer
类中创建一个空的构造函数,并从基类(User
)调用构造函数。
当你运行你的程序时,这是你得到的错误
'ConsoleApplication3.User' does not contain a constructor that takes 0 arguments
这个消息说明在User
类中没有无参数构造函数。
在User类中添加一个无参数构造函数(如果它是可编辑的,而不是在某些dll中)。否则是不可能的)如
public User()
{}
或
如果user包含带参数的构造函数,就像这样使用
public class Buyer : User
{
public Buyer() : base(FooBar)
{
}
}