所以,我有这个科学怪人:
var unsorted = new List<(Hand, List<Card>)>();
当我尝试像这样添加smt时:
unsorted.Add((hand, _tempList));
我收到并出错
索引超出范围。必须为非负数并且小于集合的大小。 (参数“索引”)
如果我事先不知道将存储多少个项目,如何正确初始化此列表?
根据评论请求:
_tempList = IsStraightFlush(theValueHand);
if (_tempList.Count == 5)
{
unsorted.Add((hand, _tempList));
continue;
}
我在其中向元组添加列表的功能
private List<Card> IsStraightFlush(List<Card> hList)
{
var st = 0;
_tempList.Clear();
foreach (var t in hList)
{
...
}
if (_tempList.Count < 5)
{
return new List<Card>();
}
hList = _tempList.ToList();
_tempList.Clear();
for (var i = 0; i < hList.Count - 2; i++)
{
...
if (st == 4)
{
_tempList.Add(hList[i + 1]);
return _tempList;
}
}
st = 0;
_tempList.Clear();
if (hList[0].Value == 13) //Ace through 5
for (int i = hList.Count - 1, j = 0; i > 0; i--, j++)
{
...
if (st == 4)
{
_tempList.Add(hList.First());
return _tempList.OrderBy(x => x.Value).ToList();
}
}
return new List<Card>();
}
当我使用它时
resultHands.AddRange(SortStraightFlushes(unsorted));
...
private List<(int, Hand)> SortStraightFlushes(List<(Hand, List<Card>)> hList)
{
var sortedHList = hList.OrderBy(x => x.Item2[0].Value).ToList();
List<(int, Hand)> output = new List<(int, Hand)>();
for (int i = 0; i < sortedHList.Count; i++)
{
if(i != sortedHList.Count - 1)
if (sortedHList[i].Item2[0].Value == sortedHList[i + 1].Item2[0].Value)
output.Add((1, sortedHList[i].Item1));
else
output.Add((0, sortedHList[i].Item1));
else
output.Add((0, sortedHList[i].Item1));
}
return output;
}
答案 0 :(得分:0)
我不知道它到底有多美观和准确,但一切都可以算出:
unsorted.Add((hand, new List<Card>().Concat(_tempList).ToList()));