Jedyną rzeczą oferowaną przez Enumerable, którą znalazłem, nie działa w stałej przestrzeni, jest ToList(), z oczywistych powodów.
Przy niektórych wyliczeniach jest to nieefektywne, ponieważ masz już złożoność przestrzeni powyżej stałej (zwykle O (n) podczas przechowywania elementów) i że dana kolekcja oferuje mechanizm o mniejszej złożoności czasu. Jeśli sam tworzysz taką kolekcję, warto oferować własne wersje rozszerzeń oferowanych przez Enumerable. Na przykład, jeśli masz kolekcję, która jest nieodłącznie posortowana, powinieneś być w stanie zaoferować Min() i Max() w stopniu lepszym od złożoności O (n) (bez względu na to, czy jest to O (1), O (ln) czy coś innego zależy od tego, w jaki sposób przechowywano sortowanie). Ponieważ metody instancji zastępują metody rozszerzeń (gdy wywoływane jest wyrażenie typu obiektu, a nie typ instancji), to bez żadnej różnicy od kodera korzystającego z obiektu, zapewnisz lepszą wydajność.
Ma to sens, że Max nie używa odroczonego wykonywania, ponieważ zwraca wartość T nie jest liczbą. Innym sposobem patrzenia na to, jest to, że żaden z nich naprawdę nie odłożył wykonania; wszystkie natychmiast zwracają obiekt, który będzie się zachowywał na różne sposoby, gdy zostanie wyliczony przez.Wynik Max() nie jest jednak wyliczany przez. Chociaż nie jest to najlepszy sposób myślenia o rzeczach przez większość czasu, może pomóc, gdy próbuje zapamiętać, co jest i nie jest odroczone. –