请问一个ArrayList类型转换的问题~
情况是这样的,有一个Card类,代码如下:
public class Card:ICloneable
{
public readonly Suit suit;
public readonly Rank rank;
public Card(Suit newSuit, Rank newRank)
{
suit = newSuit;
rank = newRank;
}
private Card()
{
}
}
现在需要用一个任意长度的Card集合,于是就用了ArrayList,ArrayList tempCards = new ArrayList();
之后有一个函数是检查这些Card是不是同花的,即Card[i].suit==Card[j].suit,函数如下
static bool CheckPlush(Card[] cards)
{
for (int i = 0; i < (cards.Length - 1); i++)
if (cards[i + 1].suit != cards[i].suit)
return false;
return true;
}
这个函数的参数必须用Card的,我本来想用ArrayList,但是ArrayList的返回类型是object,我在cards[i+1]前面加Card,即(Card)cards[i+1].suit也不行,提示说object没有suit……,于是我就用了一个Cards数组来进行浅复制,
Card[] tempCard = new Card[tempCards.Count];
for (int count = 0; count < tempCards.Count; count++)
{
tempCard[count] = (Card)tempCards[count];
}
然后这个tempCard数组作为参数传过去……
怎么样才能不用这个tempCard数组呢?~我现在想到的只有建一个Cards类,实现CollectionBase接口……其它就没办法了,请各位指点指点,怎么转换这个ArrayList的类型,使它能在CheckPlush里面使用,多谢了