Array类中的Array.Copy方法是否会更改C#中数组的大小
本文关键字:Array 数组 是否 Copy 方法 | 更新日期: 2023-09-27 18:24:21
根据我对代码的理解
Array.Copy(intArray, intArray2, intArray.Length);
两者都将intArray的元素复制到intArray2中,并指定Destination Array的长度。然而,这也可能意味着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?
它不会改变数组的大小。看看你在做什么。
这将初始化一个长度为或2的新数组。创建阵列
int[] intArray = new int[] {1,2};
int[0] = 1
int[1] = 2
这条线创建了一个长度为3的新阵列
int[] intArray2 = new int[intArray.Length + 1];
Length返回2,然后再加1。使intArray2的长度为3。
默认情况下,intArray2中的所有int数组值都设置为0。
即
intArray2[0] = 0
intArray2[1] = 0
intArray2[2] = 0
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中,并指定Destination Array的长度。然而,这也可能意味着intArray.Length作为最后一个参数指定了要复制到的索引范围。
在这两种说法中,你都不太正确。
Array.Copy方法参数,特别是您引用的最后一个参数,是要从原始数组中复制的元素数。它不会指定目标数组的长度。你对音域这个词的用法也不太正确。那将是(IMHO)
Array.Copy(intArray, intArray2, startIndex, endIndex);
我认为在.NET框架中不存在。