C#数组移动项(非ArrayList/通用列表)

C#数组移动项(非ArrayList/通用列表),c#,arrays,C#,Arrays,有一个对象,它是一个数组(不是arraylist或generic),可以容纳一组任何东西 [[One],[Two],[Three],[Four]] 想把[4]移到[2]前面。 oldIndex=3,newIndex=1 所以结果是 [[One],[Four][Two],[Three]] 在.NET2.0中,最有效的方法是什么, e、 g 提前感谢试试这个 Array someArray = GetTheArray(); object temp = someArray.GetValue(3);

有一个对象,它是一个数组(不是arraylist或generic),可以容纳一组任何东西

[[One],[Two],[Three],[Four]]
想把[4]移到[2]前面。 oldIndex=3,newIndex=1 所以结果是

[[One],[Four][Two],[Three]]
在.NET2.0中,最有效的方法是什么, e、 g

提前感谢

试试这个

Array someArray = GetTheArray();
object temp = someArray.GetValue(3);
someArray.SetValue(someArray.GetValue(1), 3);
someArray.SetValue(temp, 1);

更像是这样,只是为了说明问题的答案有多好,而不是你回答了多少问题。我不知道你能把数组复制到它自己。我猜这就是ArrayList是如何插入的?我尝试了使用reflector的代码,但是我可以找到ArrayList类,谢谢这个问题看起来对你来说太简单了,如果你可以的话,你可以尝试回答我发布的另一个问题。。。我真的不明白这个答案怎么会赢得更多的选票。这里给出的解决方案仅适用于OP非常具体的示例。该方法应命名为
movewithinarayinnespecificcase(…)
。例如,如果我们尝试前后移动一个元素,我们会得到负的
length
-参数(这只是此方法中可能出现的错误之一)。如果我使用我给出的数组逐步遍历您的代码,那么我会得到一个与我需要的数组不同的数组…#1.数组someArray=GetTheArray();[[One]、[2]、[3]、[4]]。\35;#2。objecttemp=someArray.GetValue(3);温度是三度。SetValue(someArray.GetValue(1,3);GetValue(1)是[Two][[One]、[Two]、[Two]、[Two]、[Two].[4。SetValue(temp,1);[1]、[4]、[3]、[2]。###我想要[1]、[4]、[2]、[3]。(即在[2]前面移动[4])
Array someArray = GetTheArray();
object temp = someArray.GetValue(3);
someArray.SetValue(someArray.GetValue(1), 3);
someArray.SetValue(temp, 1);
void MoveWithinArray(Array array, int source, int dest)
{
  Object temp = array.GetValue(source);
  Array.Copy(array, dest, array, dest + 1, source - dest);
  array.SetValue(temp, dest);
}