我有一个包含7个元素的数组,我需要将5和6个索引元素移动到1和2位置,反之亦然
比如说
ItemParameter[] parameters = {a,b,c,d,f,g,h};
我需要
{a,g,h,d,f,b,c}
答案 0 :(得分:8)
使用扩展名方法定义为:
public static void Switch<T>(this IList<T> array, int index1, int index2)
{
var aux = array[index1];
array[index1] = array[index2];
array[index2] = aux;
}
简单地用作:
ItemParameter[] arr = {a,b,c,d,f,g,h};
arr.Switch(2, 6);
arr.Switch(1, 5);
答案 1 :(得分:1)
ItemParameter[] arr = {a,b,c,d,f,g,h};
// swap elements of index 1 and 5
var tmp = arr[1];
arr[1] = arr[5];
arr[5] = tmp;
// swap elements of index 2 and 6
tmp = arr[2];
arr[2] = arr[6];
arr[6] = tmp;
答案 2 :(得分:1)
如果需要随机化(随机播放)数组内容,可以在初始化数组后使用下面的方法对数组内容进行随机播放。
可以像这样使用:
ItemParameter[] arr = {a,b,c,d,f,g,h};
ShuffleArr(arr);
方法:
public static void ShuffleArr<T>(T[] arr)
{
Random rng = new Random();
int n = arr.Length;
while (n > 1) {
n--;
int k = rng.Next(n + 1);
T value = arr[k];
arr[k] = arr[n];
arr[n] = value;
}
}
答案 3 :(得分:0)
这样的东西?
ItemParameter[] parameters = {a,b,c,d,f,g,h};
ItemParameter tmp = new ItemParameter();
tmp = parameters[5];
parameters[5] = parameters[0];
parameters[0] = tmp;
tmp = parameters[6];
parameters[6] = parameters[1];
parameters[1] = tmp;