如何解决为什么要创建新的通用集合而不是使用List <T>?
| 我想创建纸牌游戏。 我需要创建一个收藏夹才能收藏卡片。 我可以使用“ 0”类型或创建自己的通用集合类型。 由于什么原因,我应该选择创建自己的集合类型的解决方案? 更新: 1)感谢大家的快速解答。 2)实际上,我需要我的卡列表非常动态。 我需要一直添加和删除卡。 如果我想向集合中添加专门的方法 为什么不创建自己的继承自List的集合? 3)\“通用列表类型将允许您跳过将对象强制转换回Cards例如... \” 如果我要使用“ 0”,它也是一个通用类型,因此我不必使用强制转换。解决方法
好吧,您的卡座不允许您添加,删除或编辑卡片。从技术上讲,它应该是只读数组,而不是2。
除此之外,它可能需要专门的方法来进行说说,洗牌,标记卡(将其提供给玩家,将其标记为已玩等)等等。
这完全取决于您要为此付出多少努力:)
, 如果列表为您的api用户提供了太多的功能,那么您可能想要创建自己的类型。例如,如果您希望用户能够洗牌,但又不希望他们删除卡。列表报价
Remove
,索引器list[13] = new Card
,Clear ()
改变了列表。另外,如果您希望触发特定事件,则可能需要自己制作。
, 通用列表类型可让您跳过将对象强制转换回Cards的情况,例如...
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));
基本上,这一切都取决于您想要什么。由于您知道将要存储卡,因此不妨使用通用集合。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。