Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c#协程

作者:你忘我亡   发布日期:2026-01-04   浏览:67

using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;

public class CoroutineExample
{
    // 协程方法,使用IEnumerator返回类型
    public IEnumerator SimpleCoroutine()
    {
        Console.WriteLine("协程开始");

        // 模拟一些异步操作或延迟
        yield return Task.Delay(1000);

        Console.WriteLine("协程结束");
    }

    // 调用协程的方法
    public async Task RunCoroutine(IEnumerator coroutine)
    {
        while (coroutine.MoveNext())
        {
            if (coroutine.Current is Task task)
            {
                await task;
            }
        }
    }

    public static void Main(string[] args)
    {
        var example = new CoroutineExample();
        example.RunCoroutine(example.SimpleCoroutine()).GetAwaiter().GetResult();
    }
}

解释说明:

  1. IEnumerator 和 yield return:

    • IEnumerator 是 C# 中用于实现迭代器的接口。
    • yield return 语句用于在每次调用 MoveNext() 时返回一个值,并暂停方法的执行,直到下一次调用 MoveNext()
  2. SimpleCoroutine 方法:

    • 这是一个简单的协程方法,它会在启动时打印 "协程开始",然后模拟一个异步操作(使用 Task.Delay),最后打印 "协程结束"。
  3. RunCoroutine 方法:

    • 该方法用于运行协程。它会循环调用 MoveNext() 来逐步执行协程中的代码。
    • 如果当前的 coroutine.Current 是一个 Task,则等待该任务完成。
  4. Main 方法:

    • Main 方法中,我们创建了一个 CoroutineExample 实例,并调用了 RunCoroutine 方法来启动协程。
    • 使用 GetAwaiter().GetResult() 来同步等待协程完成。

这个示例展示了如何在 C# 中实现类似协程的行为,尽管 C# 并没有像 Unity 或其他语言那样内置的协程支持,但可以通过 IEnumeratoryield return 实现类似的逻辑。

上一篇:c# hashmap

下一篇:c#创建数组

大家都在看

c# 二进制

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

c#网络编程

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站