Tôi chỉ đang triển khai mẫu Vứt bỏ và khi tôi vừa nhập dòng GC.SuppressFinalize(this)
, tôi đã tự hỏi liệu có bao giờ sử dụng trường hợp để sử dụng một thông số nào khác không phải là this
làm tham số cho phương thức hay không.Có trường hợp sử dụng nào không sử dụng "điều này" khi gọi GC.SuppressFinalize (điều này) không?
Đây là mô hình tiêu biểu:
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this); // right here
}
Liệu nó bao giờ làm cho tinh thần để gọi GC.SuppressFinalize()
với một cái gì đó khác hơn this
?
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(foo); // should this ever happen?
}
Thời gian duy nhất tôi có thể tưởng tượng rằng hữu ích là nếu bạn đang sử dụng một lớp bên thứ ba có trình kết thúc và phương thức Dispose() nhưng nó không tự gọi là 'GC.SuppressFinalize()' vì lý do nào đó. Sau đó, bạn về mặt lý thuyết có thể sửa chữa nó bằng cách gọi SuppressFinalize() cho đối tượng explicity sau khi bạn gọi là Dispose() cho nó. Nhưng điều đó nghe khá xa vời. –
Tất nhiên có sử dụng, không phải là những thứ rất phổ biến. Trong những thứ như một hồ bơi đối tượng. Nhưng đó không phải là một câu hỏi hay cho SO. –
Không có nhiều trường hợp thực sự. Cũng theo các câu hỏi trên thanh bên (Khi nào tôi nên sử dụng GC.SupressFinalize()?), Câu trả lời hàng đầu nói: Đừng bị cám dỗ để gọi SuppressFinalize trên các đối tượng khác tâm trí bạn. Đó là một lỗi nghiêm trọng chờ đợi xảy ra. –