Quellcode durchsuchen

Hand-rolling Empty iterator.

Bart De Smet vor 8 Jahren
Ursprung
Commit
e47142a5a7
1 geänderte Dateien mit 8 neuen und 1 gelöschten Zeilen
  1. 8 1
      Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Empty.cs

+ 8 - 1
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Empty.cs

@@ -11,7 +11,14 @@ namespace System.Linq
     {
         public static IAsyncEnumerable<TValue> Empty<TValue>()
         {
-            return CreateEnumerable(() => CreateEnumerator<TValue>(ct => TaskExt.False, current: null, dispose: null));
+            return new EmptyAsyncIterator<TValue>();
+        }
+
+        private sealed class EmptyAsyncIterator<TValue> : AsyncIterator<TValue>
+        {
+            public override AsyncIterator<TValue> Clone() => new EmptyAsyncIterator<TValue>();
+
+            protected override Task<bool> MoveNextCore() => TaskExt.False;
         }
     }
 }