2

現在、HighScoreクラスを作成しようとしていますが、適切に作成する方法がわかりません。これまでのコードは次のとおりです。

class HSItem
{
    private string name;
    private int points;

    //Constructor Method
    public HSItem(string name, int points)
    {
        this.name = name;
        this.points = points;
    }

    //Property for name
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    //Property for points
    public int Points
    {
        get { return points; }
        set { points = value; }
    }
}

2番目のクラス:

public class HighScore
{
    //Method HighScore constructor for list cap
    public HighScore(int maxInList)
    {
        List<int> topHS = new List<int>(maxInList);
    }

    //Method for Add
    public void Add(string name, int points)
    {
        List<HSItem> hs = new List<HSItem>();
        hs.Add(new HSItem { Name = name, Points = points });
    }
}

しかし、私はこのエラー'HighScore.HSItem' does not contain a constructor that takes 0 argumentsが発生し、無知になります。

コンストラクターは、Highscoreリストが持つことができる最大スペースを決定するために数値を取り込んで、Add()メソッドは、最初のクラスに新しい情報を追加することです。

私は助けに感謝します

4

5 に答える 5

4

コンストラクターには何も渡していません。次のことができます。

List<HSItem> hs = new List<HSItem>();
hs.Add(new HSItem("Darren", 1000));

または、0 引数を取るコンストラクターを定義します。

public HSItem()
{

} 
于 2013-03-19T15:35:53.080 に答える
2

この行を置き換える必要があります

hs.Add(new HSItem { Name = name, Points = points });

次のものによって

hs.Add(new HSItem (name,points));
于 2013-03-19T15:36:23.553 に答える
2

コンストラクターはありますが、使用していません。クラスにコンストラクターがある場合、デフォルトのパラメーターなしのコンストラクターが削除されますnew HSItem()。つまり、0 引数を取るコンストラクターがないため、使用できません。

変化する

hs.Add(new HSItem { Name = name, Points = points });

hs.Add(new HSItem(name,points));
于 2013-03-19T15:37:00.967 に答える
0

コンストラクターのないクラスを作成すると、クラスはパラメーターのないコンストラクターを自動的に取得します。ただし、パラメーター付きのコンストラクターを定義すると、パラメーターのないコンストラクターは自動的に追加されません。パラメータのないコンストラクタが必要な場合は、自分で追加する必要があります。または、とにかく使用していないコンストラクターを削除することをお勧めします。

このコードを削除すると、すべてがうまくいきます。

//Constructor Method
public HSItem(string name, int points)
{
    this.name = name;
    this.points = points;
}
于 2013-03-19T15:36:38.893 に答える