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

本文关键字:数组 同类型 对象 单个 访问 | 更新日期: 2023-09-27 18:19:08

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

例如:

object[] NationalTeam;

可能持有:

class Swimmer
class Runner

等。具有不同属性的

。不能用NationalTeam[i]访问它们。可以用重载[]索引器来完成吗?如果是,怎么做?

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

您必须:

  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. 或者两者结合使用。

Eric Lippert (c#的设计者之一)有一篇精彩的文章解释了一个非常相似的问题。我建议你读一读。http://ericlippert.com/2015/04/27/wizards-and-warriors-part-one/