Bộ thu gom rác chỉ biết về bộ nhớ. Đó là tốt cho bộ nhớ, bởi vì một chút bộ nhớ là khá nhiều như tốt như bất kỳ khác, miễn là bạn đã có đủ của nó. (Đây là tất cả sự kết hợp của bộ nhớ đệm modulo, v.v.)
Bây giờ so sánh với bộ xử lý tệp. Hệ điều hành có thể có nhiều chỗ để phân bổ nhiều tập tin hơn - nhưng nếu bạn để một tay cầm mở cho một tập tin cụ thể, không ai khác có thể mở tập tin cụ thể đó để viết. Bạn nên thông báo cho hệ thống khi bạn đã hoàn thành với một xử lý - thường là bằng cách đóng luồng tương ứng - ngay sau khi bạn hoàn tất, và làm như vậy theo cách đóng nó ngay cả khi một ngoại lệ được ném ra. Điều này thường được thực hiện với tuyên bố using
, giống như lần thử/cuối cùng với cuộc gọi đến Dispose
trong khối cuối cùng.
Các cấu trúc trong C++ là rất khác với .NET finalizers, như C++ destructors là xác định - chúng tự động được gọi khi biến có liên quan nằm ngoài phạm vi, ví dụ. Trình tổng hợp được chạy bởi bộ thu gom rác tại một số điểm sau khi một đối tượng không còn được tham chiếu bởi bất kỳ đối tượng "trực tiếp" nào, nhưng thời gian là không thể đoán trước. (Trong một số trường hợp hiếm gặp, nó có thể bao giờ xảy ra.)
Bạn nên thực hiện IDisposable
mình nếu bạn có bất cứ dọn dẹp mà nên được thực hiện tất định - thường đó là trường hợp nếu một trong các biến Ví dụ bạn cũng cụ IDisposable
. Thật hiếm khi những ngày này cần phải tự mình hoàn thành - bạn thường chỉ cần một nếu bạn có trực tiếp giữ trên tay cầm hệ điều hành, thường ở dạng IntPtr
; SafeHandle
làm cho tất cả điều này dễ dàng hơn nhiều và giải phóng bạn khỏi phải tự mình viết bản finalizer.
Nguồn
2010-05-04 09:18:31
Hãy thử liên kết này - http://ondotnet.com/pub/a/oreilly/dotnet/news/programmingCsharp_0801.html – Gishu
Câu hỏi này cũng liên quan: http://stackoverflow.com/questions/317184/c-using -keyword-when-and-when-not-to-use-it –