Cách dọn dẹp các tài nguyên không được quản lý trong C # [trùng lặp]
Tôi có lớp học này:
public class A
{
//Some logic code here
}
Câu hỏi của tôi là làm thế nào tôi có thể loại bỏ hoặc phá hủy bất kỳ đối tượng nào được tạo dựa trên lớp này sau khi vượt ra ngoài phạm vi?
Ví dụ:
A a = new A();
//some code here
sau khi //some code here
tôi muốn a
đối tượng bị phá hủy hoặc xử lý và giải phóng bộ nhớ được cấp phát của anh ta.
Trả lời
Tôi sẽ bỏ qua tiêu đề và tập trung vào phần nội dung của câu hỏi vì nó có vẻ hiển nhiên từ câu hỏi vấn đề là gì.
Câu trả lời ngắn gọn: Bạn không. Việc này sẽ được bộ thu gom rác tự động xử lý khi thấy cần thiết. (Bạn không cần phải chạy trình thu gom rác. Điều đó xảy ra tự động.)
Sau đó, bộ thu gom rác sẽ tìm kiếm các thực thể đã vượt ra khỏi phạm vi, như a
trong ví dụ của bạn và sẽ giải phóng không gian mà chúng đã sử dụng. Sau đó, nó sẽ thấy rằng nội bộ của a
cũng đã vượt ra khỏi phạm vi (trừ khi chúng được tham chiếu ở nơi khác trong mã của bạn) và xử lý chúng.
Đã nói rằng, khi bạn sử dụng các biến của các lớp triển khai Dispose
, tốt nhất là gọi Dispose
một cách rõ ràng hoặc sử dụng using
các khối để hoàn thành việc đó. Bạn cũng có thể triển khai một trình hoàn thiện sẽ được thực thi khi a
được xử lý. Nhưng có vẻ như đó không phải là những gì bạn đang hỏi.