Tôi đã đọc ví dụ sau MSKB và chúng thực hiện xóa trên đối tượng được quản lý.Khi nào nên xóa được gọi trên một đối tượng được cấp gcnew?
Tôi đã bị ấn tượng rằng bạn không bao giờ nên xóa một đối tượng thu thập được thu gom thay vì bạn phải để nó cho người thu gom rác.
Tôi đã bỏ lỡ điều gì?
Phương pháp 4
//#include <msclr/marshal.h>
//using namespace msclr::interop;
marshal_context^context = gcnew marshal_context();
const char* str4 = context->marshal_as<const char*>(str);
puts(str4);
delete context;
Vì vậy, sau đó đánh dấu đối tượng cho GC ngay lập tức hơn không thực sự có lý do nào tốt để sử dụng xóa trong ví dụ trên? – TownCube
@Cube: Không, việc kết thúc hợp đồng 'IDisposable' của bạn là một lý do tuyệt vời để ** luôn luôn ** sử dụng' xóa' bất cứ khi nào bạn hoàn thành một đối tượng. Hoặc tốt hơn, sử dụng ngữ nghĩa stack cho mô phỏng RAII, do đó bạn không bao giờ phải sử dụng 'delete', và' Dispose' sẽ tự động được gọi ngay sau khi các đối tượng đi ra khỏi phạm vi. – ildjarn