[英]Join together two list objects in C#
基本上,我正在編寫撲克應用程序,並且有一個名為Deck
的類,它實際上只是一個List<>
包含Card
類。 它實際上只是一張卡片清單。
我現在正在嘗試將其中兩個Decks
連接在一起: playerCards
和tableCards
。 但是,當我編寫此代碼時,出現錯誤消息:
playerCards.Concat(tableCards);
它告訴我,“'Deck'不包含'Concat'的定義,找不到可以接受類型為'Deck'的第一個參數的擴展方法'Concat'。”
如何將這兩個列表對象串聯在一起?
希望這可以更好地解釋Deck ...
public class Deck
{
public Deck()
{
deck = new List<Card>();
}
public List<Card> deck { get; }
Concat方法是在Enumerable
定義的擴展方法:
IEnumerable<TSource> Concat<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);
這意味着您可以像這樣使用它:
IEnumerable<Card> deck1 = new List<Card>();
IEnumerable<Card> deck2 = new List<Card>();
IEnumerable<Card> deck3 = deck1.Concat(deck2);
它將返回一個新的Card對象序列。
為fx List<T>
定義了方法AddRange
:
public void AddRange(IEnumerable<T> collection)
像這樣使用它:
List<Card> deck1 = new List<Card>();
List<Card> deck2 = new List<Card>();
deck2.AddRange(deck1);
這將通過添加deck2中的元素來修改列表deck1。
因此,如何在類Deck
實現Concat
或AddRange
的選擇取決於您希望它具有的行為:
Deck
返回一個包含卡片的新Deck
Deck
從其他添加卡Deck
也許您可以使用以下作為啟發:
public class Deck
{
private List<Card> cards;
public IReadOnlyList<Card> Cards
{
get
{
return cards.AsReadOnly();
}
}
public Deck()
{
cards = new List<Card>();
}
public Deck(IEnumerable<Card> cards)
{
cards = cards.ToList();
}
public Deck Concat(Deck other)
{
return new Deck(Cards.Concat(other.Cards));
}
public void AddRange(Deck other)
{
cards.AddRange(other.Cards);
}
}
public void Concat(Deck other)
{
this.deck.AddRange(other.deck);
}
像這樣。 List.AddRange
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.