在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
答案 0 :(得分:3)
我认为这是一个可以通过继承更好地解决的案例
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>