请问一个ArrayList类型转换的问题~

dusker 2009-02-26 08:44:50
情况是这样的,有一个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里面使用,多谢了
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xpi_01 2009-02-26
  • 打赏
  • 举报
回复
可以使用泛型呀.那么就不存在类型转换了
dusker 2009-02-26
  • 打赏
  • 举报
回复
晕……竟然是括号打错地方了……我就是说记得这样应该可以的嘛……多谢min_jie了,呵呵 基本功要练习
止戈而立 2009-02-26
  • 打赏
  • 举报
回复
((Card)cards[i+1]).suit这样不行吗?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧