使用 CountAsync 或 AsyncEnumerable CountAwaitAsync 有什么区别?
What is the difference in using CountAsync or AsyncEnumerable CountAwaitAsync?
使用 CountAsync 或 AsyncEnumerable CountAwaitAsync 有什么区别?
在AsyncEnumerable.cs中有:
public static ValueTask<int> CountAwaitAsync<[Nullable(2)] TSource>(
[Nullable(1)] this IAsyncEnumerable<TSource> source,
[Nullable(new byte[] {1, 1, 0})] Func<TSource, ValueTask<bool>> predicate,
CancellationToken cancellationToken = default (CancellationToken));
- 为什么名字里有await?
- 为什么只能用谓词调用?
两者对我来说都毫无意义,但我确信它们是有道理的。没看懂。
CountAsync
用于谓词 (Func<TSource, bool>
) 同步的情况。
CountAwaitAsync
适用于谓词是异步 lambda 的情况。因此它的签名是Func<TSource, ValueTask<bool>>
。使用默认谓词 a => true
不需要异步,所以我认为这就是这里没有默认谓词的原因。
更新:根据@Sir Rufo,CountAwaitAsync 等待谓词,因此其名称中有 Await。
使用 CountAsync 或 AsyncEnumerable CountAwaitAsync 有什么区别?
在AsyncEnumerable.cs中有:
public static ValueTask<int> CountAwaitAsync<[Nullable(2)] TSource>(
[Nullable(1)] this IAsyncEnumerable<TSource> source,
[Nullable(new byte[] {1, 1, 0})] Func<TSource, ValueTask<bool>> predicate,
CancellationToken cancellationToken = default (CancellationToken));
- 为什么名字里有await?
- 为什么只能用谓词调用?
两者对我来说都毫无意义,但我确信它们是有道理的。没看懂。
CountAsync
用于谓词 (Func<TSource, bool>
) 同步的情况。
CountAwaitAsync
适用于谓词是异步 lambda 的情况。因此它的签名是Func<TSource, ValueTask<bool>>
。使用默认谓词 a => true
不需要异步,所以我认为这就是这里没有默认谓词的原因。
更新:根据@Sir Rufo,CountAwaitAsync 等待谓词,因此其名称中有 Await。