Tôi đã tự hỏi, khi nào chính xác tôi có thể sử dụng vòng lặp foreach? Tôi có phải triển khai IEnumerable không?Có phải IEnumerable được yêu cầu sử dụng vòng lặp foreach không?
Trả lời
Bạn có thể foreach dù bất kỳ đối tượng mà thực hiện IEnumerable
hoặc IEnumberable<T>
Không cần để thực hiện các giao diện IEnumerable để sử dụng câu lệnh foreach. Dưới đây là một trích dẫn từ MSDN (http://msdn.microsoft.com/en-us/library/9yb8xew9.aspx):
Trong C#, nó không phải là hoàn toàn cần thiết cho một lớp bộ sưu tập để kế thừa từ IEnumerable và IEnumerator để để tương thích với foreach. Miễn là vì lớp học có yêu cầu GetEnumerator, MoveNext, Đặt lại và Thành viên hiện tại, nó sẽ hoạt động với foreach. Bỏ qua các giao diện có lợi thế của việc cho phép bạn xác định loại trả về Hiện tại là cụ thể hơn đối tượng, trong đó cung cấp loại an toàn.
Giống như thế này vì nó chính xác nói rằng 'IEnumerable' không được yêu cầu. Nó chắc chắn làm cho cuộc sống dễ dàng hơn, mặc dù. –
Điều đó thực sự thú vị và tôi không biết điều đó. Nhưng tôi cho rằng đây là chủ yếu để hỗ trợ an toàn loại trong .NET 1.0. Tôi muốn nói cách tốt nhất để đảm bảo an toàn loại hiện nay là sử dụng phiên bản chung của IEnumerable. –
+1 Học một cái gì đó mới mỗi ngày. – BoltClock
giải thích toàn diện: http://msdn.microsoft.com/en-us/library/aa664754%28VS.71%29.aspx
Hãy tự hỏi mình - bạn có thực sự cần một vòng lặp truy cập
Nguyên tắc hàng đầu tôi sử dụng được xác định nếu tôi di chuyển dữ liệu giữa hai container được lập chỉ mục, nơi tôi thực sự làm cần một giá trị chỉ mục để giải quyết đích, hoặc nói chung, 'tôi có cần số chỉ mục cho mỗi mục tôi đang xử lý trong vòng lặp' không? Trong những trường hợp đó, tôi sử dụng vòng lặp for, trong hầu hết các trường hợp khác (nơi foreach có thể xử lý container, như đã nói ở trên là khá nhiều container) - lý do khá đơn giản, có vẻ khá ngu ngốc khi sử dụng foreach và sau đó phải đi đến những rắc rối của tự duy trì một truy cập vòng lặp.
- 1. Có vòng lặp foreach trong Go không?
- 2. Break vòng lặp foreach bên trong và tiếp tục vòng lặp foreach bên ngoài
- 3. Bộ sưu tập sử dụng trong vòng lặp foreach
- 4. C# foreach trong vòng lặp foreach
- 5. Tại sao AddRange nhanh hơn sử dụng vòng lặp foreach?
- 6. Sử dụng cuộc gọi chức năng trong vòng lặp foreach
- 7. Sử dụng vòng lặp 'foreach' với stringArray trong C#
- 8. Vòng lặp foreach của SQL
- 9. DeleteObject() trong vòng lặp foreach
- 10. Python có bất kỳ vòng lặp tương đương (không foreach)
- 11. Bạn có thể lặp qua một giá trị enum có thể bằng cách sử dụng vòng lặp Qt foreach không?
- 12. khai báo biến ngoài vòng lặp foreach
- 13. Có phải tải Lazy được yêu cầu cho nHibernate không?
- 14. Yêu cầu gcc đặc biệt mở một vòng lặp
- 15. Thực tiễn tốt nhất để tạo các đối tượng được sử dụng trong/vòng lặp foreach
- 16. đối tượng stdClass và vòng lặp foreach
- 17. HTTP: Yêu cầu POST nhận được 302, yêu cầu chuyển hướng có phải là GET không?
- 18. JSHint sẽ không cho phép tôi sử dụng 'forEach' trong vòng lặp 'for'
- 19. tạo nhiều DropDownListFor trong vòng lặp foreach
- 20. C# string.replace trong vòng lặp foreach
- 21. vòng lặp foreach với bộ đếm
- 22. Giá trị khóa vòng lặp PHP foreach
- 23. Velocity không giải quyết biến trong foreach vòng lặp
- 24. Smarty: in một phần tử cụ thể của một mảng KHÔNG sử dụng vòng lặp foreach
- 25. Liệu một IEnumerable có phải sử dụng Năng suất để được hoãn lại
- 26. JSTL c: forEach, số vòng lặp giảm dần không thể?
- 27. Nhãn được sử dụng với các câu lệnh không phải là vòng lặp như thế nào?
- 28. Liệu vòng lặp foreach này có gọi là Split() mỗi lần lặp trong C# không?
- 29. Sử dụng biến lặp của vòng lặp foreach trong biểu thức lambda - tại sao không thành công?
- 30. Yêu cầu main.cpp phải không?
[Câu trả lời đầu tiên] (http://msdn.microsoft.com/fr-fr/library/ttw7t8t6%28VS.80%29.aspx) tại Google. – pascal
http://msdn.microsoft.com/en-us/library/9yb8xew9(VS.80).aspx – Dave
Bạn có thể sử dụng chúng vào các ngày Thứ Ba và Thứ Năm và trong ngày cuối tuần thứ năm của tháng theo lịch. –