如何在C#中的单个对象数组中访问不同类型的类

时间:2015-10-24 14:23:16

标签: c#

我有一个对象数组,它应该包含不同类的对象。我需要写下这些类的属性,但不知道如何访问它们。

例如:

object[] NationalTeam;

可能持有:

class Swimmer
class Runner

具有不同的属性。无法使用NationalTeam[i]访问它们。可以通过重载[]索引器来完成吗?如果是,怎么样?

1 个答案:

答案 0 :(得分:4)

您必须:

  1. 施展他们:

    object teamMember = NationalTeam[0];
    
    if (teamMember is Swimmer)
    {
        Swimmer swimmerTeamMember = (Swimmer)teamMember;
        // Work with swimmer
    }
    // ... and so on
    
  2. 添加并实现一个接口或基类,例如ITeamMemberTeamMember

    interface ITeamMember { /* common properties */ }
    class Swimmer : ITeamMember { /* ... */ }
    ITeamMember[] NationalTeam;
    
  3. 或使用两者的组合。

  4. Eric Lippert(C#的设计师之一)有一个很棒的演练来解释一个非常类似的问题。我建议你读一读。 http://ericlippert.com/2015/04/27/wizards-and-warriors-part-one/