从我理解这行代码
Array.Copy(intArray, intArray2, intArray.Length);
两者都将intArray的元素复制到intArray2中,并指定目标数组的长度。但是,它也可能意味着intArray.Length作为最后一个参数指定要复制到的索引范围。
例如:
using System;
public class myClass{
public static void Main(){
int[] intArray = new int[] {1,2};
int[] intArray2 = new int[intArray.Length + 1];
Array.Copy(intArray, intArray2, intArray.Length);
intArray = intArray2;
foreach(int i in intArray){
Console.Write(intArray[i]);
}
}
}
为什么打印出201?
答案 0 :(得分:3)
它不会改变数组的大小。看看你在做什么。
使用Length或2初始化一个新数组。创建数组
int[] intArray = new int[] {1,2};
int[0] = 1
int[1] = 2
此行创建一个长度为3的新数组
int[] intArray2 = new int[intArray.Length + 1];
intArray.Length返回2,然后向其中添加1。使intArray2 3的长度。
默认情况下,intArray2中的所有int数组值都设置为0.
即
intArray2[0] = 0
intArray2[1] = 0
intArray2[2] = 0
You Copy函数正在将值从intArray复制到intArray2 制备
intArray2[0] = 1
intArray2[1] = 2
intArray2[2] = 0
行
intArray = intArray2
不会将值复制回intArray。它将intArray指向intArray2的地址。
编写foreach循环的方式会导致数组打印为:
intArray[1] = 2
intArray[2] = 0
intArray[0] = 1
应该写成
foreach(int i in intArray)
{
Console.Write(i);
}
<强>更新强>
从我理解这行代码
Array.Copy(intArray,intArray2,intArray.Length);
两者都将intArray的元素复制到intArray2中,并指定目标数组的长度。但是,它也可能意味着intArray.Length作为最后一个参数指定要复制到的索引范围。
在这两个陈述中你都不太正确。
Array.Copy方法参数,特别是您引用的最后一个参数,是从原始数组中复制的元素数。它不会指定目标数组的长度。你使用单词范围也不太正确。那就是(恕我直言)
Array.Copy(intArray, intArray2, startIndex, endIndex);
我不认为它存在于.NET Framework中。