-1

我很困惑为什么这不会运行。

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;
    }
}
4

4 回答 4

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()
        {
        }
    }
于 2013-03-18T17:24:27.820 回答
2

如果基类 (User) 具有至少采用一个参数的构造函数,但没有不带参数的构造函数,则会发生此错误。

所以这没关系:

class User
{
}

class Buyer : User
{
    public void AuctionWon()
    {
    }
}

因为用户没有任何构造函数,编译器会自动为你创建一个默认的带有 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 构造函数,并为其提供适当的参数。

于 2013-03-18T17:36:38.463 回答
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)
    {
    }
}
于 2013-03-18T17:25:01.727 回答
0

我怀疑您的User类不包含没有参数的构造函数。所以在构造它的实例时Buyer不知道如何构造基类。

为了解决这个问题:在你的Buyer类中创建一个空的构造函数,并让它从基类(User)中调用一个构造函数。

于 2013-03-18T17:25:42.963 回答