C#LastIndexOf没有给出正确的结果

时间:2016-01-10 23:19:49

标签: c# arrays indexing

在这段特殊代码中:

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

我得到结果correct = -1,这怎么可能呢?

turns[0]最多turns[3]等于false turns[4]=trueturns[5]=false是否可能导致因为我想要查找最后一个索引to是4,它的值与所需的值不同?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

试试这个:

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

你做错了什么:

  • 从不硬编码数组长度(特别是在你的情况下,当数组填充值时)
  • 第一个索引实际上是向后的起始搜索索引,第二个索引实际上是计数,即要搜索的项目数(MSDN constructor clarification

更新1:

在起始索引和计数上犯了一个错误。更新了更改,感谢@Steve指出它。

答案 2 :(得分:0)

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

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