소스 검색

Implementing IAsyncIListProvider on Empty.

Bart De Smet 8 년 전
부모
커밋
0dfce7fee3
1개의 변경된 파일8개의 추가작업 그리고 1개의 파일을 삭제
  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

@@ -3,6 +3,7 @@
 // See the LICENSE file in the project root for more information. 
 
 using System.Collections.Generic;
+using System.Threading;
 using System.Threading.Tasks;
 
 namespace System.Linq
@@ -14,10 +15,16 @@ namespace System.Linq
             return new EmptyAsyncIterator<TValue>();
         }
 
-        private sealed class EmptyAsyncIterator<TValue> : AsyncIterator<TValue>
+        private sealed class EmptyAsyncIterator<TValue> : AsyncIterator<TValue>, IAsyncIListProvider<TValue>
         {
             public override AsyncIterator<TValue> Clone() => new EmptyAsyncIterator<TValue>();
 
+            public Task<int> GetCountAsync(bool onlyIfCheap, CancellationToken cancellationToken) => Task.FromResult(0);
+
+            public Task<TValue[]> ToArrayAsync(CancellationToken cancellationToken) => Task.FromResult(Array.Empty<TValue>());
+
+            public Task<List<TValue>> ToListAsync(CancellationToken cancellationToken) => Task.FromResult(new List<TValue>());
+
             protected override Task<bool> MoveNextCore() => TaskExt.False;
         }
     }