gpt4 book ai didi

c# - 等待数组;通过实现数组的扩展方法

转载 作者:太空狗 更新时间:2023-10-29 23:32:47 26 4
gpt4 key购买 nike

我想通过实现一个扩展方法让一个数组可等待

public static IAwaitable GetAwaiter(this mytype[] t)
{
return t.First().GetAwaiter();
}

但是即使 IntelliSense 说“(awaitable) mytype[]”,编译器在使用时给我一个错误

mytype[] t = new mytype[] { new mytype(), new mytype() };
await t;

在单个 mytype 对象上调用 await 工作正常。这是为什么?难道我做错了什么?感谢您的帮助。

最佳答案

我认为这是编译器中的错误,您应该 report it .

我可以验证此代码不起作用(使用 TaskTaskAwaiter,而不是自定义类型):

public static TaskAwaiter GetAwaiter(this Task[] tasks)
{
return tasks.First().GetAwaiter();
}

Task[] tasks = …;
await tasks;

(如所报告的,它会产生错误“无法等待‘System.Threading.Tasks.Task[]’”。)

但是为 IEnumerable 交换数组(在方法和本地)确实有效:

public static TaskAwaiter GetAwaiter(this IEnumerable<Task> tasks)
{
return tasks.First().GetAwaiter();
}

IEnumerable<Task> tasks = …;
await tasks;

有趣的是,在固定版本中,直接等待数组仍然不起作用。但是例如等待 IList 确实有效。

关于c# - 等待数组;通过实现数组的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14198019/

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