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