以下是一个简单的延迟算子实现,基于 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 秒钟才能完成。

C# 延迟算子实现 - 延时遍历 IEnumerable 集合

原文地址: https://www.cveoy.top/t/topic/lJOS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录