类不包含带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;
    }
}

类不包含带0个参数的构造函数

似乎你的基类(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)
    {
    }
}