Khi triển khai IList<T>
, tôi thấy rằng tôi được yêu cầu xác định hai phương thứcGetEnumerator
. Một trả về một giá trị thuộc loại IEnumerator
, trong khi giá trị kia trả về IEnumerator<T>
.Tại sao việc triển khai 'IList <T>' yêu cầu xác định hai phương thức 'GetEnumerator'?
Tôi hơi bối rối về sự khác biệt giữa hai phương thức GetEnumerator
này. Trong khi các kiểu trả về rõ ràng là khác nhau, về cơ bản chúng không giữ cùng một dữ liệu?
Ngoài ra, tại sao cả hai phiên bản GetEnumerator
đều có thể tồn tại dưới dạng phương thức khi chúng chỉ khác nhau theo loại trả về? Điều này có vẻ vi phạm quy tắc trong C# chỉ định rằng các phương thức quá tải không thể chỉ khác nhau theo loại trả về.
Không hoàn toàn đúng, đối số chung là không đủ - một được thực hiện một cách rõ ràng, cái kia thì không. –
Tôi hầu như không gọi việc sử dụng không phổ biến của IEnumerator trong một phép thuật vòng lặp foreach. Nó chỉ đơn giản là cố gắng một diễn viên từ đối tượng đến loại bạn chỉ định. Nếu không thành công, bạn sẽ nhận được Ngoại lệ. –
Được chấp nhận để giải thích vấn đề tương thích ngược. Cảm ơn. – MyNameIsJob