[英]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.