-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

このエラーは、基本クラス (ユーザー) に少なくとも 1 つの引数を取るコンストラクターがあり、引数のないコンストラクターがない場合に発生します。

だからこれはOKです:

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() 
    {
    }
}

これで、既存の User コンストラクターを呼び出すコンストラクターを Buyer に追加し、それに適切な引数を提供しました。

于 2013-03-18T17:36:38.463 に答える
0

プログラムを実行すると、これがエラーになります

'ConsoleApplication3.User' does not contain a constructor that takes 0 arguments

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 に答える