C# 在C中按最后一个而不是第一个调整数组大小#
我有一个类元素数组,通过一个int变量,我需要将这个数组调整到最后的X元素 例如,我有一个数组:C# 在C中按最后一个而不是第一个调整数组大小#,c#,arrays,resize,C#,Arrays,Resize,我有一个类元素数组,通过一个int变量,我需要将这个数组调整到最后的X元素 例如,我有一个数组: Array[0] = Msg1 Array[1] = Msg2 Array[2] = Msg3 Array[3] = Msg4 Array[4] = Msg5 Array[5] = Msg6 Array[6] = Msg7 Array[7] = Msg8 Array[8] = Msg9 Array[9] = Msg10 我只需要数组中的最后8个元素 我无法使用Array.Resize函数,因为结果
Array[0] = Msg1
Array[1] = Msg2
Array[2] = Msg3
Array[3] = Msg4
Array[4] = Msg5
Array[5] = Msg6
Array[6] = Msg7
Array[7] = Msg8
Array[8] = Msg9
Array[9] = Msg10
我只需要数组中的最后8个元素
我无法使用Array.Resize函数,因为结果是:
Array[0] = Msg1
Array[1] = Msg2
Array[2] = Msg3
Array[3] = Msg4
Array[4] = Msg5
Array[5] = Msg6
Array[6] = Msg7
Array[7] = Msg8
我需要这样的东西:
Array[0] = Msg3
Array[1] = Msg4
Array[2] = Msg5
Array[3] = Msg6
Array[4] = Msg7
Array[5] = Msg8
Array[6] = Msg9
Array[7] = Msg10
我该怎么做?我希望我的问题很清楚
谢谢。创建一个新数组,然后执行
Array.Copy()
或者,使用LINQ,您可以执行
array.Skip(array.Length-8)。使用LINQ获取(8.ToArray()
:
array = array.Skip(array.Length - 8).ToArray();
林克:
int[] temp = new int[8];
Array.Copy(array, array.Length - temp.Length, temp, 0, temp.Length);
array = temp;
它们的顺序必须相同吗 像这样的怎么样
Reverse(Array);
Resize(ref Array, 8)?
见鬼,你可以再倒过来拿你的订单回来,我想你可能用错了。从您的示例来看,a或a将是更好的选择,两者都将使您的操作更加简单,甚至微不足道,并且自2.0以来都是.NET FCL的一部分。(不需要专门的收藏库。) 对于队列集合,您可以简单地调用n次,而对于LinkedList,您可以调用n次,给出最终结果
除了修剪集合的开头,您还将使用其他可能也很有用的LinkedList或Queue操作。许多以数组为参数的函数都有重载,这些重载采用附加参数,例如
startIndex
以及长度/计数或endIndex
。第二个参数有时是可选的,因为可以使用Array.length
属性推断长度或endIndex
例如:
SomeFunction<T>(T[] array, int startIndex, int length)
SomeFunction(T[]数组,int startIndex,int length)
或
SomeFunction(T[]数组,int startIndex,int endIndex)
把这个扔出去;也许这是你的一个选择。Ooh Linq!可能最好跳过(array.length-8)?抱歉,我在WinMo中,因此无法使用外部集合。。我的数组类没有跳过函数:(@Leen15:我的更新对你有帮助吗?请看最后的建议(如果看不到,请刷新页面)。我无法反转数组,数组中有按日期排序的消息。
SomeFunction<T>(T[] array, int startIndex, int endIndex)