一个很好的方法是做这样的事情:
public class Team
{
private List<TeamMember> _teamMembers;
public Team()
{
this._teamMembers = new List<TeamMember>();
}
public void AddTeamMember(TeamMember newTeamMember)
{
if (newTeamMember == null) return;
if (this._teamMembers.Count < 10)
this._teamMembers.Add(newTeamMember);
}
}
那么,我们这里有什么?
我没有使用固定长度的数组然后依赖异常,而是介绍了一种控制团队成员的简单方法。
该类属性是私有的,因此您不能直接向其添加任何内容。
相反,我创建了一个公共方法,它公开了一种将成员添加到所述列表的方法,这是我们控制可以添加多少团队成员的地方。
我喜欢在构造函数中实例化列表属性,因此当您使用该类时,您无需检查该列表是否存在,而是在 Team 实例出现后立即将其初始化为一个空列表创建,然后就少了一件需要担心的事情。
然后我们可以做出更多的设计决策,也许我们希望该方法返回一个布尔结果,如果添加了某人则返回 true,如果我们没有添加则返回 false,因为我们已经有 10 个。
现在,您说 TeamMember 是其他类的基类。这意味着您可以将所有这些课程传递给您的团队。
假设你有这样的东西:
public class SomeMember : TeamMember
{
}
您仍然可以像这样将其添加到您的列表中:
var team = new Team();
var someMember = new SomeMember();
team.AddTeamMember(someMember);
代码之所以有效,是因为它基于基类,并且是一种常见的做事方式。例如,如果你有一个界面,它也可以工作。
但是,要记住的一件事是,如果您这样做,那么您将无法访问其他类提供的任何额外东西,除非您将它们从基类转换回实现类。