【问题标题】:C# LastIndexOf not giving correct resultC# LastIndexOf 没有给出正确的结果
【发布时间】:2016-04-15 04:43:29
【问题描述】:

在这行代码中:

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

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

turns[0]turns[3] 等于 false turns[4]=trueturns[5]=false 是否可能是因为我要查找的最后一个索引是 4 并且它的值不同于需要吗?

【问题讨论】:

  • 尝试将最后一个参数更改为 > 0
  • 是的,它完成了工作,感谢您的快速响应

标签: c# arrays indexing


【解决方案1】:

试试这个:

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

你做错了什么:

  • 永远不要硬编码数组长度(尤其是在您的情况下,当数组填充有值时)
  • 第一个索引实际上是从向后开始搜索的索引,第二个索引实际上是计数,即要搜索多少个项目(MSDN constructor clarification

更新 1:

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

【讨论】:

  • 来自 MSDN:StartIndex = 向后搜索的起始索引
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    问题在于最后一个参数(计数)。这限制了搜索的元素数量。您将其限制为从索引 4 开始搜索 0 个元素。因此,它什么也找不到。

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      • 2015-11-12
      • 2012-08-30
      相关资源
      最近更新 更多