/// <summary>
/// 从牌堆中压出指定数量的牌,这些牌将会从牌堆中移除。如果牌堆的牌数量不够,则只返回牌堆中剩余的牌。
/// </summary>
/// <param name="number">要压出的牌的数量。</param>
/// <returns>所压出的牌的数组。</returns>
public T[] Pop(int number)
{
return Pop(number, false);
}
/// <summary>
/// 从牌堆中压出指定数量的牌,这些牌将会从牌堆中移除。
/// </summary>
/// <param name="number">要压出的牌的数量。</param>
/// <param name="recreateHeap">在压出牌数量不够的时候是否重新创建牌堆。</param>
/// <returns>所压出的牌的数组。</returns>
public T[] Pop(int number, bool recreateHeap)
{
if (number <= 0)
return new T[0];
if (Items.Count < number && !recreateHeap)
number = Items.Count;
T[] newT = new T[number];
for (int i = 0; i < number; i++)
{
if (recreateHeap && Items.Count == 0)
{
ReCreate();
}
newT[i] = Items.First();
Items.RemoveAt(0);
usedItems.Add(newT[i]);
}
return newT;
}