gpt4 book ai didi

c# - 重载异步方法

转载 作者:行者123 更新时间:2023-11-30 22:08:26 26 4
gpt4 key购买 nike

我正在处理的库中有这个场景:

我有几个异步方法可以同时处理单个项目和项目列表。列表版本看起来像这样:

public Task<List<Result>> ReadAsync(List<ObjectId> objectIds)
{
...
}

编写适用于单个项目的 ReadAsync 版本的推荐方法是什么?

public Task<Result> ReadAsync(ObjectId objectId)
{
List<ObjectId> objectIds = new List<ObjectId> { objectId };
var result = ReadAsync(objectIds);
return ?
}

最佳答案

如果你想让基于列表的版本成为“标准”,你可以这样实现:

public async Task<Result> ReadAsync(ObjectId objectId)
{
List<ObjectId> objectIds = new List<ObjectId> { objectId };
var results = await ReadAsync(objectIds);
return results[0];
}

如果你能让基于实例的版本成为“标准”,并且愿意返回一个数组而不是List,那么你可以这样做:

public Task<Result[]> ReadAsync(IEnumerable<ObjectId> objectIds)
{
return Task.WhenAll(objectIds.Select(id => ReadAsync(id)));
}

关于c# - 重载异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22299389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com