Mẫu .NET IDis Dùng một lần ngụ ý rằng nếu bạn viết một bộ hoàn thiện và triển khai IDis Dùng một lần, thì bộ hoàn thiện của bạn cần gọi một cách rõ ràng là Dispose. Điều này là hợp lý và là điều tôi luôn làm trong những tình huống hiếm hoi mà người hoàn thiện được bảo hành.
Tuy nhiên, điều gì xảy ra nếu tôi chỉ làm điều này:
class Foo : IDisposable
{
public void Dispose(){ CloseSomeHandle(); }
}
và không thực hiện một quyết toán, hoặc bất cứ điều gì. Khung sẽ gọi phương thức Vứt bỏ cho tôi?
Vâng, tôi nhận ra điều này nghe thật ngu ngốc, và tất cả logic đều ngụ ý rằng nó sẽ không xảy ra, nhưng tôi luôn có 2 thứ ở phía sau đầu khiến tôi không chắc chắn.
Một vài năm trước đây đã từng nói với tôi rằng trên thực tế nó sẽ làm điều này và người đó đã có một hồ sơ theo dõi rất chắc chắn về việc "biết công cụ của họ".
Trình biên dịch / khung làm những việc 'ma thuật' khác tùy thuộc vào giao diện bạn triển khai (ví dụ: foreach, phương thức mở rộng, tuần tự hóa dựa trên các thuộc tính, v.v.), do đó, điều này có nghĩa là điều này cũng có thể là 'ma thuật'.
Trong khi tôi đã đọc rất nhiều thứ về nó, và có được rất nhiều điều ngụ ý, tôi chưa bao giờ có thể tìm thấy một dứt khoát Có hoặc Không câu trả lời cho câu hỏi này.