如何在c#中更改数组的索引?

时间:2015-06-18 13:29:48

标签: c# .net

我有一个包含7个元素的数组,我需要将5和6个索引元素移动到1和2位置,反之亦然

比如说

 ItemParameter[] parameters = {a,b,c,d,f,g,h};

我需要

 {a,g,h,d,f,b,c}

4 个答案:

答案 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;