我正在自学如何在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
}
希望能有所帮助!