【发布时间】:2010-05-20 10:14:28
【问题描述】:
我不明白 Current 如何可以为 null 并且 LINQ 函数 Last() 可以返回一个对象。我认为 Last 使用 GetEnumerator 并一直持续到 current == null 并返回对象。但是,正如您所看到的,第一个 GetEnumerator().Current 为 null,最后一个以某种方式返回一个对象。
linq Last() 是如何工作的?
items.GetEnumerator().Current
items.Last()
【问题讨论】:
-
您将序列与其枚举数混淆了。想象一本带有编号页的书。那是一个序列。想象一个书签,标记一个特定的页面。那是一个枚举器。如果需要,您可以在一本书中拥有一百个书签,所有书签都标记不同的位置。调用 GetEnumerator.Current 是在您尚未将书签放入书中时询问书签所在的页面;不要那样做。