c#如何向highscore类添加信息

时间:2013-03-19 15:33:25

标签: c# .net list add

我目前正在尝试制作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; }
    }
}

第二课:

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()方法是将新信息添加到第一个类。

我很感激帮助

5 个答案:

答案 0 :(得分:4)

您没有向构造函数传递任何内容。您可以执行以下操作:

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

或者定义一个带0个参数的构造函数:

public HSItem()
{

} 

答案 1 :(得分:2)

您需要替换此行

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

以下一个

hs.Add(new HSItem (name,points));

答案 2 :(得分:2)

你有一个构造函数,但你没有使用它。如果一个类有一个构造函数,那么它将删除默认的无参数构造函数,这意味着你不能使用new HSItem(),因为没有一个构造函数再接受0个参数。

更改

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

hs.Add(new HSItem(name,points));

答案 3 :(得分:1)

您将构造函数调用语法与属性初始值设定项语法混淆。

有几个人指出,调用构造函数的方法是:

new HSItem(name, points);

你写的代码:

new HSItem { Name = name, Points = points };

实际上只是一个方便的简写:

var item = new HSItem();
item.Name = name;
item.Points = points;

答案 4 :(得分:0)

如果你创建一个没有构造函数的类,那么类将自动获得一个没有参数的构造函数。但是,如果使用参数定义构造函数,则不会自动添加没有参数的构造函数。如果你想要一个没有参数的构造函数,你应该自己添加它。或者我建议你删除你没有使用的构造函数:

删除这段代码,一切都会很好:

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