Simplify SelectArrayIterator method (#85695)
authorStephen Toub <stoub@microsoft.com>
Wed, 3 May 2023 20:51:32 +0000 (13:51 -0700)
committerGitHub <noreply@github.com>
Wed, 3 May 2023 20:51:32 +0000 (13:51 -0700)
src/libraries/System.Linq/src/System/Linq/Select.cs

index 7913634..9d3dcc4 100644 (file)
@@ -178,15 +178,17 @@ namespace System.Linq
 
             public override bool MoveNext()
             {
-                if (_state < 1 | _state == _source.Length + 1)
+                TSource[] source = _source;
+                int index = _state - 1;
+                if ((uint)index < (uint)source.Length)
                 {
-                    Dispose();
-                    return false;
+                    _state++;
+                    _current = _selector(source[index]);
+                    return true;
                 }
 
-                int index = _state++ - 1;
-                _current = _selector(_source[index]);
-                return true;
+                Dispose();
+                return false;
             }
 
             public override IEnumerable<TResult2> Select<TResult2>(Func<TResult, TResult2> selector) =>