You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中async Task Something()=>...语法解析:它是方法还是委托?

C#异步本地函数语法解析

你看到的这行代码:

async Task Something() => await Console.Out.WriteLineAsync("Something");

是C# 7.0引入的异步本地函数,属于定义在方法内部的方法,不是Lambda表达式也不是直接的委托类型,具体拆解说明:

  • 本质是本地函数:它是定义在Main方法内部的具名方法,和普通类方法类似,但作用域仅限于包含它的Main方法内部。
  • 表达式体写法:这里用=>是方法的表达式体简化写法,等价于传统的块体写法:
    async Task Something()
    {
        await Console.Out.WriteLineAsync("Something");
    }
    
    这种写法在方法逻辑只有一行时可以简化代码,异步方法同样支持这种语法。
  • 可隐式转换为委托:因为Something的签名(无参数、返回Task)完全匹配Func<Task>委托的定义,所以可以直接把它作为参数传给methodX——此时它会被隐式转换为Func<Task>类型的委托实例,供methodX调用执行。

简单来说:Something本身是异步本地方法,但可以被当作Func<Task>委托来使用,这也是它能被传入methodX的原因。

内容的提问来源于stack exchange,提问作者yyhnfd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:02:08