Phương thức Array.ConstrainedCopy() trong C# được sử dụng để sao chép một phạm vi phần tử từ mảng nguồn bắt đầu tại chỉ số nguồn đã chỉ định và dán vào mảng đích bắt đầu tại chỉ số đích đã chỉ định. Phương thức này đảm bảo tính toàn vẹn: nếu sao chép thất bại, mảng đích không bị thay đổi.
Cú pháp
public static void ConstrainedCopy(Array sourceArr, int sourceIndex, Array destinationArr, int destinationIndex, int length);
Tham số:
sourceArr: Mảng nguồn chứa dữ liệu cần sao chépsourceIndex: Chỉ số bắt đầu trong mảng nguồndestinationArr: Mảng đích nhận dữ liệudestinationIndex: Chỉ số bắt đầu trong mảng đíchlength: Số lượng phần tử cần sao chép
Ví dụ
using System;
public class Demo
{
public static void Main()
{
int[] arrDest = new int[10];
Console.WriteLine("Các phần tử mảng...");
int[] arrSrc = { 20, 50, 100, 150, 200, 300, 400 };
for (int i = 0; i < arrSrc.Length; i++)
Console.Write("{0} ", arrSrc[i]);
Console.WriteLine();
// Sao chép 4 phần tử từ chỉ số 3 của mảng nguồn sang chỉ số 0 của mảng đích
Array.ConstrainedCopy(arrSrc, 3, arrDest, 0, 4);
Console.WriteLine("Mảng đích:");
for (int i = 0; i < arrDest.Length; i++)
Console.Write("{0} ", arrDest[i]);
}
}
Kết quả
Các phần tử mảng... 20 50 100 150 200 300 400 Mảng đích: 150 200 300 400 0 0 0 0 0 0
Khác biệt với Array.Copy(): ConstrainedCopy đảm bảo tính nguyên tử (atomic) - nếu có ngoại lệ xảy ra (như kiểu không tương thích), mảng đích sẽ không bị sửa đổi. Array.Copy có thể để mảng đích ở trạng thái không nhất quán nếu lỗi xảy ra giữa chừng.