我有一个对象数组,它应该包含不同类的对象。我需要写下这些类的属性,但不知道如何访问它们。
例如:
object[] NationalTeam;
可能持有:
class Swimmer
class Runner
等
具有不同的属性。无法使用NationalTeam[i]
访问它们。可以通过重载[]索引器来完成吗?如果是,怎么样?
答案 0 :(得分:4)
您必须:
施展他们:
object teamMember = NationalTeam[0];
if (teamMember is Swimmer)
{
Swimmer swimmerTeamMember = (Swimmer)teamMember;
// Work with swimmer
}
// ... and so on
添加并实现一个接口或基类,例如ITeamMember
或TeamMember
。
interface ITeamMember { /* common properties */ }
class Swimmer : ITeamMember { /* ... */ }
ITeamMember[] NationalTeam;
或使用两者的组合。
Eric Lippert(C#的设计师之一)有一个很棒的演练来解释一个非常类似的问题。我建议你读一读。 http://ericlippert.com/2015/04/27/wizards-and-warriors-part-one/