2010-06-17 53 views
8

Tôi đang viết một lớp học IEnumerator<T> để lặp qua bộ sưu tập COM Tôi là wrappering. Tôi đã nhận thấy rằng IEnumerator<T> mở rộng IDisposable, vì vậy tôi bắt buộc phải triển khai phương thức Dispose.IEnumerator: Phương pháp Vứt bỏ trống có bình thường không?

Tuy nhiên, tôi không thể nghĩ bất cứ điều gì tôi sẽ đặt ở đó, vì tôi chỉ có tham chiếu đến bộ sưu tập (mà tôi không muốn bị xử lý ở cuối số foreach) và int cho chỉ mục . Phương pháp Dispose có trống không?

Trả lời

15

Vâng, đúng vậy.

IEnumerator<T> triển khai IDisposable trong trường hợp bạn thực hiện điều tra cần phải được xử lý. Vì hầu hết các điều tra viên không cần phải được xử lý, phương pháp này thường sẽ trống.

Nhân tiện, bạn có thể triển khai IEnumerator dễ dàng hơn bằng cách creating an iterator.

+0

Cảm ơn lời nhắc về 'yield'. Tôi nghĩ có một cách dễ dàng hơn. –

+2

Nhân tiện, 'yield' là một trong những lý do mà' IEnumerator 'triển khai' IDisposable' - một câu lệnh 'using' hoặc' finally' đi vào 'Dispose'. – SLaks

+0

Đối với người dùng VB.NET, lưu ý rằng 'Yield' yêu cầu Visual Studio 2012 hoặc cao hơn. – jrh

Các vấn đề liên quan