Sao chép sâu

Tác Giả: Lewis Jackson
Ngày Sáng TạO: 8 Có Thể 2021
CậP NhậT Ngày Tháng: 25 Tháng Sáu 2024
Anonim
Sao chép sâu - Công Nghệ
Sao chép sâu - Công Nghệ

NộI Dung

Định nghĩa - Deep Copy có nghĩa là gì?

Bản sao sâu, trong C #, đề cập đến một kỹ thuật mà một bản sao của một đối tượng được tạo ra sao cho nó chứa các bản sao của cả hai thành viên thể hiện và các đối tượng được chỉ ra bởi các thành viên tham chiếu.

Sao chép sâu nhằm sao chép tất cả các phần tử của một đối tượng, bao gồm các phần tử được tham chiếu trực tiếp (thuộc loại giá trị) và các phần tử được tham chiếu gián tiếp của loại tham chiếu chứa tham chiếu (con trỏ) vào vị trí bộ nhớ chứa dữ liệu thay vì chứa dữ liệu chính nó. Bản sao sâu được sử dụng trong các tình huống trong đó một bản sao mới (bản sao) được tạo mà không có bất kỳ tham chiếu nào đến dữ liệu gốc.


Giới thiệu về Microsoft Azure và Microsoft Cloud | Trong suốt hướng dẫn này, bạn sẽ tìm hiểu về điện toán đám mây là gì và Microsoft Azure có thể giúp bạn di chuyển và điều hành doanh nghiệp của bạn từ đám mây như thế nào.

Techopedia giải thích Deep Copy

Bản sao sâu khác với bản sao nông theo cách mà các thành viên loại tham chiếu của đối tượng được sao chép. Trong khi sao chép các thành viên trường của loại giá trị trong cả hai trường hợp, một bản sao của từng bit của trường được thực hiện. Khi sao chép các trường thuộc loại tham chiếu, bản sao nông bao gồm chỉ sao chép tham chiếu, trong khi ở bản sao sâu, một bản sao mới của đối tượng được tham chiếu được thực hiện.

Bản sao sâu có thể được minh họa bằng một ví dụ bằng cách xem xét một đối tượng Nhân viên có Địa chỉ là một thành viên của loại tham chiếu cùng với các thành viên khác của loại giá trị. Một bản sao sâu của Nhân viên tạo ra một đối tượng mới, Employee2, với các thành viên có loại giá trị bằng Nhân viên nhưng tham chiếu một đối tượng mới, addressInfo2, là một bản sao của Địa chỉ.

Sao chép sâu có thể được thực hiện bằng bất kỳ phương pháp nào sau đây:


  • Trình xây dựng sao chép của lớp có thể được thực hiện với logic cần thiết để sao chép các thành viên của cả hai loại giá trị và tham chiếu (sau khi cấp phát bộ nhớ phù hợp). Phương pháp này là tẻ nhạt và dễ bị lỗi.
  • Phương pháp System.Object.MemberwiseClone có thể được sử dụng để sao chép các thành viên không thuộc loại giá trị.Bản sao của các đối tượng của kiểu tham chiếu có thể được tạo và gán với cùng một bộ giá trị như bản gốc
  • Một đối tượng phải được sao chép sâu có thể được tuần tự hóa và khử nối tiếp nó thành một đối tượng mới bằng cách khôi phục nó. Phương thức này được tự động hóa và không yêu cầu thay đổi mã để sửa đổi trong các thành viên đối tượng nhưng chậm hơn các phương thức khác và yêu cầu đối tượng nhân bản phải được tuần tự hóa
  • Sự phản chiếu với đệ quy có thể được sử dụng để có được một bản sao nông, tại đó có thể thêm mã bổ sung cần thiết cho bản sao sâu. Phương pháp này được tự động hóa và không yêu cầu thay đổi mã cho bất kỳ bổ sung hoặc loại bỏ các trường trong đối tượng. Nó chậm hơn và không được phép trong môi trường tin cậy một phần
  • Mã ngôn ngữ trung gian có thể được sử dụng, nhanh hơn nhưng dẫn đến khả năng đọc mã ít hơn và bảo trì khó khăn

Để thực hiện sao chép sâu:


  • Đối tượng phải được xác định rõ và không thể tùy ý
  • Thuộc tính của đối tượng sẽ không được xem xét
  • Nhân bản phải được tự động hóa với trí thông minh cho các trường hợp đặc biệt (như các đối tượng có chứa tài liệu tham khảo không được quản lý)