【问题标题】:invert a specific part of a list C#反转列表的特定部分 C#
【发布时间】:2020-04-03 23:32:29
【问题描述】:

我需要一个程序来反转两个终端之间的部分列表。 示例:

列表:1、2、3、3、5、4 输出:1、2、3、3、4、5(只有4和5反转)

我发现了这个:

                positionCrepe.Reverse(indexOfMaxToSearch, positionCrepe.Count);

但它不起作用,因为我有一个错误:

System.ArgumentException:偏移量和长度超出此表的范围,或者该数字大于源集合末尾的索引元素数。

然而

indexOfMaxToSearch = 2

positionCrepe.count = 5

所以不超过表的索引

有人有解决办法吗? 谢谢。

【问题讨论】:

  • 在这种特定情况下,您应该只排序

标签: c# list loops panel


【解决方案1】:

如果你看一下 Reverse 的定义,

index:要反转的范围的从零开始的起始索引。
count:要反转的范围内的元素数。

您可以使用以下方法使其工作。计数必须小于剩余的 indecies

positionCrepe.Reverse(2, positionCrepe.Count - 2);

【讨论】:

    【解决方案2】:

    第二个参数是要反转多少个元素,而不是列表中有多少个元素。

    所以如果你想反转从indexOfMaxToSearch开始的所有东西,你想反转positionCrepe.Count - indexOfMaxToSearch元素:

    positionCrepe.Reverse(indexOfMaxToSearch, positionCrepe.Count - indexOfMaxToSearch);
    

    错误信息实际上是说第一个参数加上第二个参数超出了数组的范围。

    【讨论】:

    • 我找不到 LINQ 反向方法的这种重载。这真的是Array.Reverse吗?
    • @JonathonChase 没有。是List.Reverse
    • 你在吗?我有个问题请教
    • @IzoDarkIzo 你可以发布一个新问题。
    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    相关资源
    最近更新 更多