如何在C#中使用多个派生类型的单个数据集合?

时间:2017-10-20 17:50:19

标签: c# arrays inheritance

我不确定我是否恰当地提出了我的问题,但请考虑以下情况:

我有一个名为Card的抽象类。 Card类包含许多成员。我有两个派生自Card BlueCardRedCard的课程。想象一下:

public abstract class Card{
    //many members
}

public class BlueCard : Card{
    //many members
}

 public class RedCard : Card{
    //many members
}

现在,假设我有一个班级DeckDeck需要包含BlueCardRedCard的单个数组。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我自己也在类似的情况下使用这种方法,其中ElementGroup对象包含一个对象集合,这些对象可以是Element类型,也可以是从Element派生的类型。我觉得这样的事情应该适合你的情况:

public class Deck {
    public Deck() {
        _cardArray = new Card[52];
    }

    private Card[] _cardArray;

    public void DrawCard(int cardNumber) {
        var card = _cardArray[cardNumber];
        if (card.GetType() == typeof(Card)) {
            // Do something
        }
        else if (card.GetType() == typeof(BlueCard)) {
            // Do something
        }
        else if (card.GetType() == typeof(RedCard)) {
            // Do something
        }
    }
}