C# 数组 - Copy() 方法
C# 数组 Copy() 方法将一个数组中的元素复制到另一个数组,并根据需要执行类型转换和装箱。
将一种数据类型的值赋值给另一种数据类型的过程称为类型转换,将值类型转换为其引用类型的过程称为装箱。
让我们看看 C# 中的数组复制
异常
Copy() 方法有以下异常 -
- ArgumentNullException:如果 sourceArray 和 destinationArray 中有一个为 null,则抛出该异常。
- RankException:如果数组的维数不同,则抛出此异常。
- ArrayTypeMismatchException:如果源数组的类型与目标数组不兼容,则抛出此异常。
- ArgumentOutOfRangeException:如果源索引、目标索引或长度超出范围,则抛出此异常。
- ArgumentException:如果要复制的范围无效,则抛出此异常。
语法
以下是 C# 数组 Copy() 方法的语法 -
public static void Copy(Array sourceArray, Array destinationArray, int length);
参数
此方法接受以下参数 -
- sourceArray:包含待复制数据的一维数组。
- destinationArray:从 sourceArray 复制元素的目标一维数组。
- length:待复制元素的数量。
返回值
此方法不返回任何值。
示例 1:部分复制
让我们创建一个基本示例,演示如何在 C# 代码中使用 Copy() 方法 -
using System;
class Program {
public static void Main() {
int[] source = { 1, 2, 3, 4, 5 };
int[] destination = { 10, 20, 30, 40, 50 };
Array.Copy(source, destination, 3);
Console.WriteLine(string.Join(", ", destination));
}
}
输出
以下是输出 -
1, 2, 3, 40, 50
示例 2:默认复制
让我们看另一个 Copy() 方法的示例。在这里,我们将源数组的所有元素复制到目标数组 -
using System;
class Program {
public static void Main() {
int[] source = { 1, 2, 3, 4, 5 };
int[] destination = new int[5];
Array.Copy(source, destination, source.Length);
Console.WriteLine(string.Join(", ", source));
Console.WriteLine(string.Join(", ", destination));
}
}
输出
以下是输出 -
1, 2, 3, 4, 5 1, 2, 3, 4, 5
示例 3:不同大小数组之间的复制
在本例中,我们使用 Copy() 方法将元素从源数组传输到目标数组。如果源数组的大小小于目标数组的大小,则在复制源数组后,目标数组中剩余的索引将用零填充 -
using System;
class Program {
static void Main() {
int[] source = { 1, 2, 3, 4, 5, 6, 7 };
int[] destination = new int[10];
Array.Copy(source, destination, source.Length);
Console.WriteLine("复制后的目标数组:");
foreach (int item in destination) {
Console.Write(item + " ");
}
}
}
输出
以下是输出 -
复制后的目标数组: 1 2 3 4 5 6 7 0 0 0
示例 4:处理错误
这是 copy() 方法的另一个示例。在这里,我们处理错误并显示错误消息 -
using System;
class Program {
static void Main() {
try {
int[] source = { 1, 2, 3 };
int[] destination = new int[2];
Array.Copy(source, destination, 5);
}
catch (ArgumentException ex) {
Console.WriteLine($"Error: {ex.Message}");
}
}
}
输出
以下是输出 -
ERROR! Error: length

csharp_array_class.html