Cloning trong C# hữu ích khi bạn muốn tạo bản sao của một mảng. Phương thức Clone() tạo một bản sao nông (shallow copy) của mảng. C# cũng cung cấp interface ICloneable.
Ví dụ: Clone mảng string
using System;
class Program
{
static void Main()
{
string[] arr = { "one", "two", "three", "four", "five" };
string[] arrCloned = arr.Clone() as string[];
Console.WriteLine(string.Join(",", arr));
Console.WriteLine(string.Join(",", arrCloned));
}
}
Kết quả
one,two,three,four,five
one,two,three,four,five
Giải thích:
arr.Clone()trả vềobject, cần ép kiểu (cast) hoặc dùngas.- Đây là shallow copy: với mảng kiểu tham chiếu (class), bản sao chia sẻ cùng tham chiếu đến đối tượng. Với kiểu giá trị (int, string...), giá trị được copy độc lập.
- Để deep copy, cần duyệt và tạo mới từng phần tử.