gpt4 book ai didi

c# - 如何创建包含特定类型的通用集合?

转载 作者:行者123 更新时间:2023-11-30 16:13:13 25 4
gpt4 key购买 nike

我想在 C# 中创建一副通用的纸牌。使我能够,例如创建一叠卡片、一排卡片或任何其他卡片集合?假设此集合是从 IEnumerable 派生的。

public class Deck<T> where T : IEnumerable
{
private T<ICard> __Cards;

public Deck() : this(52){}

public Deck(int cards)
{
__Cards = new T<Card>(cards);
}
}

一些其他类...调用

Deck<List> _Deck = new Deck<List>();

我收到以下错误:

The type parameter 'T' cannot be used with type arguments

最佳答案

我认为这种情况最好用继承来解决

public abstract class Deck 
{
public abstract ICard this[int index]
{
get;
set;
}

protected void Create(int cardCount);
}

public sealed class DeckList : Deck
{
private List<ICard> m_list;
public override ICard this[int index]
{
get { return m_list[index]; }
set { m_list[index] = value; }
}
protected override void Create(int cards)
{
m_list = new List<ICard>(cards);
}
}

如果您继续沿着泛型路径前进,我认为您最终会发现您需要一个具有 2 个泛型参数的类型

  • 集合类型
  • 元素类型

例子

public class Deck<TElement, TCollection> 
where TCollection : IEnumerable<TElement>

关于c# - 如何创建包含特定类型的通用集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21998870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com