我想制作纸牌游戏。
我需要创建一个集合来持卡。
我可以使用List<T>
类型或创建我自己的通用集合类型。
我应该选择创建自己的集合类型的解决方案?
1)感谢大家的快速回答。
2)其实我需要我的名单很有活力。 我需要一直添加和删除卡片。
如果我想为集合添加专门的方法 为什么不创建我自己的从List继承的集合?
3)“通用列表类型将允许您跳过将对象转换回卡片的例子......”
如果我要使用List<T>
,它也是一个通用类型,所以我不必使用强制转换。
答案 0 :(得分:2)
好吧,有一件事你的套牌不允许你添加,删除或编辑卡片。它在技术上应该是只读数组,而不是List<>
。
除此之外,它可能需要专门的方法来说,改组,标记牌(将它们交给玩家,将它们标记为等等),等等。
这完全取决于你想要投入多少努力:)
答案 1 :(得分:1)
如果List为您的api用户提供了太多功能,那么您可能需要创建自己的类型。例如,如果您希望用户能够随机播放卡片,但您不希望他们移除卡片。列出要约Remove
,索引器list[13] = new Card
,Clear ()
,它会改变列表。此外,如果您想要触发特定事件,您可能想要创建自己的事件。
答案 2 :(得分:0)
通用列表类型允许您跳过将对象转换回卡片,例如......
public class Card
{
public Suits Suit { get; set; }
public string Value { get; set; }
public Card(Suits suit, string value)
{
this.Suit = suit;
this.Value = value;
}
}
public enum Suits { Heart, Spade, Club, Diamond }
// Generic List
List<Card> cards = new List<Card>();
cards.Add(new Card(Suits.Heart, "Queen"));
cards.Add(new Card(Suits.Club, "Ace"));
cards.Add(new Card(Suits.Diamond, "5"));
// List of Objects
ArrayList list = new ArrayList();
list.Add(new Card(Suits.Heart, "Queen"));
list.Add(new Card(Suits.Club, "Ace"));
list.Add(new Card(Suits.Diamond, "5"));
Console.WriteLine(String.Format("{0} {1}", cards[0].Suit, cards[0].Value));
Console.WriteLine(String.Format("{0} {1}", (list[0] as Card).Suit, (list[0] as Card).Value));
基本上一切都取决于你想要什么。既然你知道你将要存储卡片,你也可以使用通用的收藏品。