C# 延迟算子实现 - 延时遍历 IEnumerable 集合
以下是一个简单的延迟算子实现,基于 C# 的 IEnumerable 接口:
public static class Extensions
{
public static IEnumerable<T> Delay<T>(this IEnumerable<T> source, int delayMilliseconds)
{
foreach (var item in source)
{
Thread.Sleep(delayMilliseconds);
yield return item;
}
}
}
该方法接受一个源集合和一个延迟时间(以毫秒为单位),并返回一个延迟后逐个返回源集合中的元素的新集合。在每次迭代时,该方法都会暂停指定的延迟时间,然后才会返回下一个元素。
使用示例:
var numbers = Enumerable.Range(1, 10);
foreach (var number in numbers.Delay(1000))
{
Console.WriteLine(number);
}
// Output:
// 1 (after 1 second)
// 2 (after 2 seconds)
// ...
// 10 (after 10 seconds)
在上面的示例中,我们使用了一个包含数字 1 到 10 的源集合来演示延迟算子。我们调用 Delay 方法并传递 1000 毫秒的延迟时间。在每次迭代中,该方法会暂停 1 秒钟,然后才会返回下一个数字。因此,整个循环将花费 10 秒钟才能完成。
原文地址: https://www.cveoy.top/t/topic/lJOS 著作权归作者所有。请勿转载和采集!