Tôi thấy mình thường xuyên xử lý đối tượng IEnumerable mà tôi cần lặp qua tính toán cho từng phần tử phụ thuộc vào n ngay trước đó và các đối tượng sau đây.C# Lặp qua một IEnumerable để tính toán sử dụng n phần tử trước đó và n
Một ví dụ phổ biến là tính trung bình cán, nhưng đôi khi việc tính toán phức tạp hơn đó và dựa vào một số lĩnh vực từ mỗi yếu tố của danh sách
Tôi không bao giờ chắc chắn về cách tốt nhất để cấu trúc vòng của tôi. Hiệu quả vấn đề, nhưng khả năng bảo trì và dễ đọc là quan trọng hơn.
Đôi khi tôi chuyển sang một danh sách và sau đó sử dụng một vòng lặp for để có được các yếu tố [i-1], [i], [i + 1] và sau đó thực hiện tính toán của tôi.
Lần khác tôi giữ nó như một IEnumerable, nhưng tôi "cache" vài phần tử trước đó, để tôi không tính toán cho đến khi tôi nhận được [i + 1] trong vòng lặp foreach .
- Tôi cũng xem xét sử dụng danh sách được liên kết, để tôi có thể sử dụng các phương thức .Previous và .Next.
Bất kỳ đề xuất nào về kỹ thuật nào sẽ là cách tốt nhất để sử dụng?
Không sẽ tỏ bày ngay bây giờ (quá nhiều ưu và nhược điểm cho một câu trả lời ngắn, và tôi không có thời gian cho một câu trả lời dài), nhưng một khả năng khác cho một số trường hợp là hai chỉ dẫn bạn di chuyển song song. 'i' bắt đầu bằng ví dụ: 0 và 'j' ở 3, bạn làm việc với' k' từ 'i' sang' j' (nửa mở, vì vậy nhấn 0, 1 & 2), sau đó bạn di chuyển '++ i; ++ j; 'và loop' k' một lần nữa, cho đến khi '++ j> list.Count' (vì vậy j chỉ nằm ngoài danh sách trên pass cuối cùng). –