c#Class对象-存储/检索多值列表的最佳方式是什么



我正在自学如何在c#中使用类。我有一个"最好的方法是什么"的问题,我希望有经验的人能给我指导。

假设我有一个"老师"的课堂对象。这个班的成员包括老师的名字、等级、工资等等。我还想为他存储一个可变长度的财产列表。如果他在不同的课程中扮演不同的角色,比如:

English 1A       |  Instructor
English Lit      |  Advisor
Beginning Math   |  Substitute
Study Hall       |  Monitor
English 6b       |  Instructor

我想把这些信息存储在他的类对象中,并能够在我的代码中访问它。我尝试过ArrayList、HashTable和List<gt;(我认为这不允许我存储多个列(,但我的方法都感觉像是笨拙的变通方法。我倾向于这样做:

将2列存储到列表中

这个家伙建议创建一个有两个成员的类对象,并将该类的新实例存储在列表中。好主意,但再说一遍,它有一种"变通"的感觉。

有一个";对";做我想做的事的方法?或者有人能提出一个更直接的方法吗?任何想法都值得赞赏。

这个家伙建议创建一个有两个成员的类对象并存储列表中类的新实例。

这是最常见的方法。随着时间的推移,您可能希望在"角色"的概念中添加字段,并且有一个专门用于它的类可以使这变得很容易。

您可以使用更复杂的方法,例如使用Dictionary<字符串,字符串>,元组列表或DataTable来将此类信息存储在内存中,但通常只有在您有特定理由使用这些方法时才会使用这些方法(例如,您正在建模的对象永远不会有额外的属性/字段,或者您正在从为您返回DataTables的API中提取(。

我认为最好的方法是使用字典。当两个值直接绑定在一起时,字典是最好的,在本例中就是这样。我假设你可以成为预定数量的角色,所以我会为角色创建一个枚举,并将其用作字典的键。类似这样的东西:

public enum Role
{
Instructor,
Advisor,
Substitute,
Monitor
}

那么你的字典会是这样的:

Dictionary<Role, List<string>> rolesDict = new Dictionary<Role, List<string>>();
rolesDict.Add(Role.Instructor, new List<string>() { "English 1A", "English 6b" });
rolesDict.Add(Role.Advisor, new List<string>() { "English Lit" });
rolesDict.Add(Role.Substitute, new List<string>() { "Beginning Math" });
rolesDict.Add(Role.Substitute, new List<string>() { "Study Hall" });

然后,您可以轻松访问与每个角色相关的课程。例如,如果你想看看老师是什么课程的讲师,你可以这样做:

List<string> courses = rolesDict[Role.Instructor];
for (int i = 0; i < courses.Count; i++)
{
//your code here
}

希望能有所帮助!

相关内容

  • 没有找到相关文章

最新更新