diff options
author | Jb Evain <jbevain@gmail.com> | 2010-05-25 12:56:37 +0400 |
---|---|---|
committer | Jb Evain <jbevain@gmail.com> | 2010-05-25 12:56:37 +0400 |
commit | 54ec00ea9dcd03aa463da9ca24f545cfe0ecd9b6 (patch) | |
tree | d1bad79737a1694a4f2c9b0e920d298944059413 /mcs/class/System.Core/System.Linq/Enumerable.cs | |
parent | cbb9e9025ff3c8321725dd56db7399e27d236831 (diff) |
2010-05-25 Jb Evain <jbevain@novell.com>
backport of r157831.
* Enumerable.cs: make Reverse lazier. Based on a patch by
Matthew Flaschen <matthew.flaschen@gatech.edu>. Fixes #608195.
svn path=/branches/mono-2-6/mcs/; revision=157832
Diffstat (limited to 'mcs/class/System.Core/System.Linq/Enumerable.cs')
-rw-r--r-- | mcs/class/System.Core/System.Linq/Enumerable.cs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/mcs/class/System.Core/System.Linq/Enumerable.cs b/mcs/class/System.Core/System.Linq/Enumerable.cs index 15b52670b08..c476de7bd01 100644 --- a/mcs/class/System.Core/System.Linq/Enumerable.cs +++ b/mcs/class/System.Core/System.Linq/Enumerable.cs @@ -1575,17 +1575,17 @@ namespace System.Linq { Check.Source (source); + return CreateReverseIterator (source); + } + + static IEnumerable<TSource> CreateReverseIterator<TSource> (IEnumerable<TSource> source) + { var list = source as IList<TSource>; if (list == null) list = new List<TSource> (source); - return CreateReverseIterator (list); - } - - static IEnumerable<TSource> CreateReverseIterator<TSource> (IList<TSource> source) - { - for (int i = source.Count; i > 0; --i) - yield return source [i - 1]; + for (int i = list.Count - 1; i >= 0; i--) + yield return list [i]; } #endregion |