Mẫu đầy đủ bao gồm trình hoàn thiện, giới thiệu phương pháp ảo mới và "niêm phong" phương pháp vứt bỏ ban đầu là mục đích rất chung chung, bao gồm tất cả các cơ sở.
Trừ khi bạn có xử lý trực tiếp về tài nguyên không được quản lý (mà phải được almostnever), bạn không cần một finalizer.
Nếu bạn đóng dấu lớp học của bạn (và quan điểm của tôi về niêm phong các lớp học bất cứ khi nào có thể có thể được biết đến bây giờ - design for inheritance or prohibit it) không có điểm trong việc giới thiệu một phương pháp ảo.
Tôi không thể nhớ lần cuối tôi triển khai IDisposable
theo cách "phức tạp" khi thực hiện theo cách rõ ràng nhất, ví dụ:
public void Dispose()
{
somethingElse.Dispose();
}
Một điều cần lưu ý là nếu bạn đang đi cho mã thực sự mạnh mẽ, bạn nên hãy chắc chắn rằng bạn không cố gắng làm bất cứ điều gì sau khi bạn đã được xử lý, và ném ObjectDisposedException
nơi thích hợp . Đó là lời khuyên tốt cho các thư viện lớp sẽ được các nhà phát triển sử dụng trên toàn thế giới, nhưng nó có rất nhiều công việc để đạt được rất ít nếu đây chỉ là một lớp được sử dụng trong không gian làm việc của riêng bạn.
Nguồn
2009-02-25 06:33:10
Trong lớp học của tôi, tôi chỉ có tài nguyên không được quản lý cần dọn dẹp và tôi đang triển khai IDisposable với bảo vệ void void Dispose (bool disposing) như phân tích tĩnh buộc nó phải làm. Trong trường hợp của tôi, thông số "vứt bỏ" không có sử dụng vì tôi muốn Finalizer và Dispose làm điều tương tự. – AksharRoop