IEnumerable
IEnumerable
private IEnumerable<string> Tables { get { yield return "Foo"; yield return "Bar"; } }
이 컬렉션을 반복하고 진행률을 "#n/#m 처리 중"으로 표시하려고 합니다. 기본 반복 전에 반복하지 않고 m 값을 확인할 수 있는 방법이 있나요?
IEnumerable 이해
기본적으로 IEnumerable은 m의 직접 검색을 허용하지 않습니다. 아이템 수. 지연 평가 특성은 요소가 필요할 때만 검색된다는 것을 의미합니다. 이 디자인 선택은 불필요한 메모리 할당 및 처리를 방지하여 리소스 사용을 최적화하기 위해 만들어졌습니다.
대체 솔루션: ICollection 사용
항목 수에 대한 즉각적인 지식이 필요한 경우, IEnumerable의 대안은 ICollection
public class TableCollection : ICollection<string> { // Implementation details omitted for brevity public int Count => 2; }
Tables 컬렉션을 ICollection
결론
IEnumerable이 제공하는 동안 지연 평가 이점이 있지만 항목 수 검색을 직접 지원하지 않습니다. 개수에 즉시 액세스하려면 ICollection 또는 이 기능을 제공하는 보다 적절한 데이터 구조를 사용하는 것이 좋습니다.
위 내용은 반복 없이 IEnumerable의 항목 수를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!