这个包含尖括号的符号是什么意思

本文关键字:符号 是什么 意思 包含尖 | 更新日期: 2023-09-27 18:18:45

我正在阅读c# 5.0中的Async,关于编译器转换的部分包含以下代码片段:

public Task<int> AlexsMethod()
{
    <AlexsMethod>d__0 stateMachine = new <AlexsMethod>d__0();
    stateMachine.<>4__this = this;
    stateMachine.<>t__builder = AsyncTaskMethodBuilder<int>.Create();
    stateMachine.<>1__state = -1;
    stateMachine.<>t__builder.Start<<AlexsMethod>d__0>(ref stateMachine);
    return stateMachine.<>t__builder.Task;
}

有两个符号对我来说是新的。第一个是<AlexsMethod>d__0。第二个是stateMachine.<>4__this。当我自己尝试它们时,它们都不起作用,所以我怀疑它仅供编译器使用。但是我很难找到这个符号的更多信息

这个包含尖括号的符号是什么意思

与标记泛型(例如Task<int>)的括号不同,它们没有特殊含义。它们只是编译器生成的标识符,在IL中有效,但在c#中无效。

使用lambda表达式时,lambda表达式是一个匿名方法。但是编译器需要给它一个名字,所以这些方法是由编译器生成的,不适合人类阅读。