繁体   English   中英

使用List <>,Array还是其他?

[英]Use List<>, Array or something else?

我正在从Exercism.io做一些编程练习,并且需要一些有关如何开始上年级学校作业的输入。

分配是添加名称和等级,并以List<string>的形式从等级索引接收名称。

分配的第一个测试如下所示:

[Test]
public void New_school_has_an_empty_roster()
{
    Assert.That(school.Roster, Has.Count.EqualTo(0));
}


[Test]
public void Adding_a_student_adds_them_to_the_roster_for_the_given_grade()
{
    school.Add("Aimee", 2);
    var expected = new List<string> { "Aimee" };
    Assert.That(school.Roster[2], Is.EqualTo(expected));
}

我不是在寻找完整的解决方案,但我需要一些有关名册的建议。 我的想法是名册将是这样的List数组:

public List<string>[] Roster = new List<string>[];

问题是它没有通过第一个测试,因为我必须为数组分配一个长度,所以count永远不会为0。我需要在正确方向上推动解决该问题。

我不会使用列表数组,这会令人困惑。 阅读面向对象编程(OOP)并查看类的用户。

我会有一个班级来代表某人(或您的学生),例如:

public class Student
{
    public string Name {get; set;}
    public string Grade {get; set; }
}

并将它们存储在简单的学生列表中

public List<Student> Roster;

看字典的另一种方法是,

public Dictionary<string, string> Roster;

每个条目都是学生姓名和年级,因此:

Roster.Add("John Mclain", "A*");

您也可以查看枚举(Enums)来存储成绩,而不是使用字符串。

如果等级是您的索引,则应使用Dictionary<int, List<string>>结构。 int是关键,在您的情况下,年级,列表包含该年级的学生姓名。

添加年级和学生时,请检查字典是否具有该年级的任何值,如果有,则获取值(类型为List<string> )并将学生姓名添加到该列表中,否则创建一个新列表并添加学生姓名。

您的列表初始化是错误的,这就是为什么会出现错误,您必须为数组分配大小。 这是您制作列表的方式:

   public List<string> Roster = new List<string>();

但是在这种情况下,更好的方法是创建一个Student类或使用Dictionary。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM