Vì lý do nào đó FXCop seems to think Tôi nên gọi GC.SuppressFinalize in Dispose, bất kể tôi có finalizer hay không.GC.SuppressFinalize có nên được gọi trên các đối tượng không có trình hoàn chỉnh không?
Tôi có thiếu gì đó không? Có một lý do để gọi GC.SuppressFinalize trên các đối tượng không có finalizer được xác định?
Đúng. Ngoài ra, bạn nên có một finalizer gọi Dispose(). – configurator
True- Object.Finalize là một op không, nhưng nếu bạn đang thực hiện IDisposable, bạn đang nói rằng bạn có tài nguyên để giải phóng. Từ MSDN, điều đó có nghĩa là bạn nên luôn có trình hoàn thiện để giải phóng chúng, vì vậy chúng được xử lý chính xác. Điều này có nghĩa là có Finalize gọi Dispose, và Dispose suppress finalization –
@configurator Bạn chỉ nên có một finalizer nếu bạn trực tiếp sở hữu tài nguyên không được quản lý (chẳng hạn như xử lý). Nếu bạn chỉ sở hữu chúng một cách gián tiếp, ví dụ: một tham chiếu đến một FileStream, tại sao bạn nên viết bất cứ điều gì nhiều hơn IDisposable.Dispose() {if (fs! = null) {fs.Dispose(); fs = null; }}? IMO, StyleCop là một công cụ khủng khiếp buộc một LOT của văn bản vô dụng được viết và duy trì, và cho biết thêm không có giá trị kinh doanh trong trở lại. –