Array类中的Array.Copy方法是否更改了C#中数组的大小?
根据我对这行代码的理解Array类中的Array.Copy方法是否更改了C#中数组的大小?,c#,methods,arrays,C#,Methods,Arrays,根据我对这行代码的理解 Array.Copy(intArray, intArray2, intArray.Length); 两者都将intArray的元素复制到intArray2中,并指定目标数组的长度。但是,这也可能意味着最后一个参数intArray.Length指定了要复制到的索引范围 例如: using System; public class myClass{ public static void Main(){ int[] intArray = new in
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?它不会更改阵列的大小。看看你在做什么 这将初始化长度为1或2的新数组。创建数组
int[] intArray = new int[] {1,2};
int[0] = 1
int[1] = 2
此行将创建一个长度为3的新数组
int[] intArray2 = new int[intArray.Length + 1];
Length返回2,然后向其中添加1。制作长度为2-3英寸
默认情况下,intArray2中的所有int数组值都设置为0
i、 e
复制函数正在将值从intArray复制到intArray2
制作
线路
intArray = intArray2
不会将值复制回intArray。它将intArray指向intArray的地址2
foreach循环的写入方式导致数组打印为:
intArray[1] = 2
intArray[2] = 0
intArray[0] = 1
它应该写为
foreach(int i in intArray)
{
Console.Write(i);
}
更新
根据我对这行代码的理解
数组.Copy(intArray,intArray2,intArray.Length)
两者都将intArray的元素复制到intArray2中,并指定目标数组的长度。但是,这也可能意味着最后一个参数intArray.Length指定了要复制到的索引范围
这两种说法你都不太正确
方法参数,特别是您提到的最后一个参数,是要从原始数组复制的元素数。它不会指定目标数组的长度。你对range这个词的使用也不太正确。那就是(IMHO)
我认为它不存在于.NET Framework中。它不会改变数组的大小。看看你在做什么 这将初始化长度为1或2的新数组。创建数组
int[] intArray = new int[] {1,2};
int[0] = 1
int[1] = 2
此行将创建一个长度为3的新数组
int[] intArray2 = new int[intArray.Length + 1];
Length返回2,然后向其中添加1。制作长度为2-3英寸
默认情况下,intArray2中的所有int数组值都设置为0
i、 e
复制函数正在将值从intArray复制到intArray2
制作
线路
intArray = intArray2
不会将值复制回intArray。它将intArray指向intArray的地址2
foreach循环的写入方式导致数组打印为:
intArray[1] = 2
intArray[2] = 0
intArray[0] = 1
它应该写为
foreach(int i in intArray)
{
Console.Write(i);
}
更新
根据我对这行代码的理解
数组.Copy(intArray,intArray2,intArray.Length)
两者都将intArray的元素复制到intArray2中,并指定目标数组的长度。但是,这也可能意味着最后一个参数intArray.Length指定了要复制到的索引范围
这两种说法你都不太正确
方法参数,特别是您提到的最后一个参数,是要从原始数组复制的元素数。它不会指定目标数组的长度。你对range这个词的使用也不太正确。那就是(IMHO)
我认为这在.NET框架中是不存在的。C#!=C++!C-不要说“基于C的语言”-它们的行为不同。。。这些语言都有C风格的语法——它们不是基于C的(例如,C是受管理的,没有直接内存管理)。而且每种基于C的语言对数组的定义都不同,这只是关于C的一个问题,仅仅因为内存直接内存管理不是强制的,并不意味着它不是基于C的。如果是这样的话,那么你可以说Objective-C不是一种基于C的语言,因为你可以打开自动引用,即Garabage collector。所以,是的,我相信你错了C++!C-不要说“基于C的语言”-它们的行为不同。。。这些语言都有C风格的语法——它们不是基于C的(例如,C是受管理的,没有直接内存管理)。而且每种基于C的语言对数组的定义都不同,这只是关于C的一个问题,仅仅因为内存直接内存管理不是强制的,并不意味着它不是基于C的。如果是这样的话,那么你可以说Objective-C不是一种基于C的语言,因为你可以打开自动引用,即Garabage collector。所以是的,我相信你错了。哦,我甚至没有看到索引滥用,这就是为什么它打印201而不是120。。。伙计,这个小片段是一个壮观的specimentoreach(intArray中的inti){Console.Write(intArray);}这会打印出System.Int32[]System.Int32[]System.Int32[]System.Int32[]哦,我甚至没有看到索引滥用,这就是为什么它会打印201而不是120。。。这个小片段是一个壮观的specimenforeach(intArray中的inti){Console.Write(intArray);}这将打印出System.Int32[]System.Int32[]System.Int32[]System.Int32[]