微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么要创建新的通用集合而不是使用List <T>?

如何解决为什么要创建新的通用集合而不是使用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 举报,一经查实,本站将立刻删除。