为所有数组元素分配新值

时间:2015-05-09 18:23:16

标签: c#

有没有办法在下面做这样的事情?我初始化一个int数组,其所有元素都是-1。有没有办法为下面的所有元素分配新值?

int[] arr = {-1,-1,-1,-1,-1,-1,-1};
arr = {0,1,2,5,7,18,20};

我想做的是下面。有很多case s(我这里只有三个)我第一次接近......在下面的行中需要arr = new[]{0,1,2,5,7,18,20};

private int[] getComboArray(int toLocation)
{
    int[] arr = new int[7];
    switch (toLocation)
    {
        case 0:
            arr = {0,1,2,5,7,18,20} ; //<-------
            break;  
        case 1:
            arr = {2,3,2,4,4,19,20} ; //<-------
            break;
        case 2:
            arr = {4,3,2,5,4,11,10} ; //<-------
            break;
    }

    return arr;
}

5 个答案:

答案 0 :(得分:0)

//you can overwrite your previous array like this
int[] arr = {-1,-1,-1,-1,-1,-1,-1};
arr = new int[] {0,1,2,5,7,18,20};

答案 1 :(得分:0)

试试这个:

int[] arr = {-1,-1,-1,-1,-1,-1,-1};
new int[] {0,1,2,5,7,18,20}.CopyTo(arr, 0);

保留原始数组arr的地址。

答案 2 :(得分:0)

老实说,你的问题中没有足够的信息来确定你需要完成的事情。从技术上讲,将新值分配给数组中的各个元素非常容易,如下所示:

for(int i = 0; i < arr.Length; i++)
{
    arr[i] = i;
}

如果您希望所有数组元素都遵循特定模式,如上所述......您应该以这种方式初始化它:

int[] arr = new int[] { 0, 1, 2, 5, 7, 18, 20 };

如果你不知道这些值是什么,但你有一个源数组和一个目标数组,那么复制是另一种方法:

int[] sourceArray = null;
// Something happens to fill your source array.
int[] destArray = new int[7];
Array.Copy(sourceArray, destArray, destArray.Length);

答案 3 :(得分:0)

您可以再次使用new关键字来设置值。

int[] arr = {-1,-1,-1,-1,-1,-1,-1};
arr =  new[] {0,1,2,5,7,18,20}; // 0,1,2,5,7,18,20

使用此功能,您的功能如下所示。

private int[] getComboArray(int toLocation)
{
    int[] arr = new int[7];
    switch (toLocation)
    {
        case 0:
            arr =  new [] {0,1,2,5,7,18,20} ; //<--
            break;  
        case 1:
            arr = new []{2,3,2,4,4,19,20} ; //<--
            break;
        case 2:
            arr =new [] {4,3,2,5,4,11,10} ; //<--
            break;
    }

    return arr;
}

如果要将新元素附加到当前数组,可以创建List个新元素并将数组附加到该元素,之后可以将其转换回数组。

int[] arr = {-1,-1,-1,-1,-1,-1,-1};
var concat = new List<int> {0, 1, 2, 5, 7, 18, 20};
concat.AddRange(arr);
arr = concat.ToArray(); // -1,-1,-1,-1,-1,-1,-1,0,1,2,5,7,18,20

答案 4 :(得分:0)

int[] arr = {-1,-1,-1,-1,-1}
int[] arrTT = {0,1,2,5,7,18,20}

for(int i=0; i<arr.Length; i++)
{
   arr[i]=arrTT[i];
}