有没有办法在下面做这样的事情?我初始化一个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;
}
答案 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];
}