Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中按最后一个而不是第一个调整数组大小#_C#_Arrays_Resize - Fatal编程技术网

C# 在C中按最后一个而不是第一个调整数组大小#

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函数,因为结果

我有一个类元素数组,通过一个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[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)