Bối cảnh điển hình: Tôi tạo một phương thức mở rộng cho một bộ sưu tập xem xét các yếu tố được sắp xếp. Hàm bắt đầu từ đầu, ở chỉ số 0 và thứ tự có ý nghĩa. Ví dụ: Nhóm theo trình tự hoặc Chỉ mục của một mục .
Tuy nhiên, tôi luôn luôn bối rối không biết nên mở rộng điều gì: IEnumerable<T>
hay T[]
. Lý do của tôi là sự rõ ràng về mục đích: Một mảng có một khái niệm về thứ tự, trong khi một IEnumerable được thực hiện bởi nhiều bộ sưu tập chung, không phải tất cả đều có khái niệm về thứ tự:
- Từ điển - không có thứ tự
- Hashset - không có thứ tự
- LinkedList - đã đặt hàng
- Danh sách - đặt hàng
- Xếp hàng - đặt hàng
- SortedDixi - được sắp xếp (không phải thứ tự gốc)
- SortedList - được sắp xếp (không phải thứ tự gốc)
- Sắp xếp - sắp xếp (không phải thứ tự gốc)
- Ngăn xếp - đảo ngược
Cũng như bất kỳ thực hiện nào khác có thể hoặc không thể được ra lệnh.
Ngoài ra, tôi không chắc chắn nếu điều tra viên được thiết lập lại nếu việc liệt kê chưa hoàn thành, vì vậy nếu đó là một điều đáng lo ngại, thì ai biết tại thời điểm nào việc liệt kê sẽ bắt đầu? Việc liệt kê một mảng sẽ luôn bắt đầu từ đầu.
Vì vậy, với tôi, nó có ý nghĩa hơn để mở rộng a T[]
. Nhưng tôi có đúng trong suy nghĩ đó không? Tôi có lo lắng quá không? Cách tiếp cận phù hợp để đảm bảo liệt kê "ra lệnh" là gì?