C#未给出正确结果的最后索引

C#未给出正确结果的最后索引,c#,arrays,indexing,C#,Arrays,Indexing,在这一行代码中: correct = Array.LastIndexOf(turns.ToArray(), false, 4, 0); 我得到的结果正确=-1,那么这怎么可能呢 turns[0]最多turns[3]等于falseturns[4]=true和turns[5]=false是否可能是因为我要查找的最后一个索引是4,并且它的值不同于所需的值?问题在于最后一个参数(count)。这限制了搜索的元素数。您限制它从索引4开始搜索0个元素。因此,它找不到任何东西。问题在于最后一个参数(coun

在这一行代码中:

correct = Array.LastIndexOf(turns.ToArray(), false, 4, 0);
我得到的结果
正确=-1
,那么这怎么可能呢


turns[0]
最多
turns[3]
等于
false
turns[4]=true
turns[5]=false
是否可能是因为我要查找的最后一个索引是4,并且它的值不同于所需的值?问题在于最后一个参数(count)。这限制了搜索的元素数。您限制它从索引4开始搜索0个元素。因此,它找不到任何东西。

问题在于最后一个参数(count)。这限制了搜索的元素数。您限制它从索引4开始搜索0个元素。因此,它找不到任何东西。

请尝试以下方法:

correct = Array.LastIndexOf(turns.ToArray(), false, turns.Length, turns.Length);
你做错了什么:

  • 永远不要硬编码数组长度(特别是在您的情况下,当数组充满值时)
  • 第一个索引实际上是从向后开始搜索的索引,第二个索引实际上是计数,即要搜索的项目数()
更新1:

在起始索引和计数编号上出错。更新了更改,谢谢@Steve指出。试试这个:

correct = Array.LastIndexOf(turns.ToArray(), false, turns.Length, turns.Length);
你做错了什么:

  • 永远不要硬编码数组长度(特别是在您的情况下,当数组充满值时)
  • 第一个索引实际上是从向后开始搜索的索引,第二个索引实际上是计数,即要搜索的项目数()
更新1:


在起始索引和计数编号上出错。更新了更改,感谢@Steve指出。

您的计数表明在该部分中搜索了0个元素

correct = Array.LastIndexOf(turns.ToArray(), false, 4, 2);

您的计数表示在节中搜索0个元素

correct = Array.LastIndexOf(turns.ToArray(), false, 4, 2);

尝试将最后一个参数更改为>0是它完成了任务感谢快速响应将最后一个参数更改为>0是它完成了任务感谢快速响应from MSDN:StartIndex=反向搜索的起始索引from MSDN:StartIndex=反向搜索的起始索引