Cho đến nay, cách rõ ràng nhất và rõ ràng nhất để mô tả một biến, tham số, hoặc trường kiểu "IEnumerable <Foo>" là để gọi nó là một "IEnumerable <foo>", "IEnumerable (Tất foo)", hoặc "IEnumerable of foo". Là một lập trình VB, tôi thích cú pháp ở giữa, đặc biệt vì nó không sử dụng các dấu câu có thể bị nhầm lẫn với việc đánh dấu HTML; khi nói, dạng thứ hai sẽ là cách phát âm tự nhiên nhất (với chữ "I" đầu tiên biểu diễn âm tiết riêng của nó), trừ các trường hợp liên quan đến generics lồng nhau, khi các tín hiệu phát âm khác có thể được yêu cầu để biểu thị chính xác.
Một số lớp thực hiện chung hoặc không chung chung (*) Giao diện IEnumerable là bộ sưu tập, nhưng một số thì không. Một số là vòng lặp; một số thì không. Do đó, thuật ngữ "collection" và "iterator" không thực sự phù hợp trừ khi người ta biết rằng một IEnumerable cụ thể sẽ thực sự là một bộ sưu tập hoặc trình lặp.Thuật ngữ "iterator" có một vấn đề bổ sung, được chia sẻ bởi thuật ngữ "sequence": không phải tất cả các trình vòng lặp hoặc trình tự thực hiện IEnumerable; một số thực hiện IEnumerator, và một số thực hiện một phương pháp GetEnumerator nhưng không thực hiện IEnumerable (ví dụ bởi vì họ muốn cho phép "foreach" nhưng không muốn hứa hẹn tất cả các hành vi ngụ ý của IEnumerable). Nếu người ta muốn tránh biệt ngữ, thuật ngữ "chuỗi tái sử dụng" có thể là một thuật ngữ tốt. Nó không hoàn toàn rõ ràng, vì nó có thể tham chiếu đến các lớp có phương thức GetEnumerator nhưng không thực hiện IEnumerable, hoặc có thể đối với các đối tượng IEnumerator mà phương thức Reset thực sự đặt lại đếm, nhưng nó loại trừ các trình vòng lặp dùng một lần.
(*) Thuật ngữ "IEnumerable" từ đây trở đi sẽ tham chiếu đến IEnumerable và IEnumerable <T> thay thế cho nhau. Tương tự như vậy "IEnumerator".
Tôi đang tham chiếu chủ yếu dưới dạng bộ sưu tập ** ** :) – Samich
đánh dấu yêu cầu CW theo OP –
Tôi thường tham khảo một số Foo :-) Vì vậy, một chuỗi . – xanatos