... nếu tôi sử dụng IDisposable trong biến cục bộ, nhưng không gọi Dispose() hoặc sử dụng mẫu using().Có quy tắc FxCop cho IDisposable được sử dụng cục bộ không?
public void BadMethod()
{
var fs = new FileStream("file.txt", FileMode.Create);
fs.WriteByte(0x55);
// no dispose, no using()
}
Giống như quy tắc "Types that own disposable fields should be disposable" cho trường.
EDIT: thay thế MemoryStream bằng FileStream, vì MemoryStream chỉ cấp phát bộ nhớ và không sử dụng các nguồn lực (unmanaged), để ai đó có thể thảo luận về một Dispose() gọi bắt buộc.
Tại sao bạn muốn điều đó? Nó là vô nghĩa, bộ nhớ không phải là dùng một lần. Hy vọng rằng chúng tôi sẽ không nhận được một công cụ mà nói nó là, nó sẽ phá hủy tâm trí lập trình không thể khắc phục. –
@nobugz: Nó vẫn còn đúng ở đây để thực sự gọi Dispose trên MemoryStream. Thực tế là MemoryStream không sử dụng bất kỳ tài nguyên không được quản lý nào là chi tiết * implementation *. ** Hợp đồng ** cho MemoryStream nói rằng nó thực hiện IDisposable, và như vậy, nó nên luôn luôn có Dispose được gọi là trên nó. Đó là * luôn luôn * tốt hơn để mã chống lại hợp đồng hơn so với các chi tiết thực hiện cụ thể. – casperOne
@capser: vâng, một số lập trình viên như Máy cho họ biết phải làm gì. Đó là tôn giáo mà tôi không đăng ký, tôi thích phá vỡ quy tắc một cách có chủ ý. Đi trước và làm theo cách của bạn, bạn sẽ không bao giờ được chứng minh sai. Chỉ chậm chạp. –