<
public List<Card> FindThreeAndTwo(List<Card> cards, int weight)
{
List<Card> select = new List<Card>();
List<Card> Three = FindThree(cards, weight);
if(Three.Count > 0)
{
List<Card> copyCards = cards;
foreach (var card in Three)
{
copyCards.Remove(card);
}
List<Card> Two = FindDouble(copyCards, -1);
if(Two.Count != 0)
{
select.AddRange(Three);
select.AddRange(Two);
}
}
return select;
}
>
这里可能会出现一个极端bug,就是在找到三个却没有找到对的时候,会执行移除三个的操作,list是引用类型,所以会出现电脑吃不起却自己删除了三个一样的牌,不知道分析的对不对,所以需要用复制一个list出来,然后使用复制出来的list去移除三个的,再从复制出来的list中找对子,如果找到也无需移除原有牌,因为函数的目的只是找出能打的牌~不知道这样理解对不对,希望Ivy老师给出答复~~^_^