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

C# 这个包含尖括号的符号是什么意思?,c#,.net,syntax,async-await,notation,C#,.net,Syntax,Async Await,Notation,我正在阅读,关于编译器转换的部分包含以下代码段: public Task<int> AlexsMethod() { <AlexsMethod>d__0 stateMachine = new <AlexsMethod>d__0(); stateMachine.<>4__this = this; stateMachine.<>t__builder = AsyncTaskMethodBuilder<int>

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

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=新的d__0();
stateMachine.4_uuthis=this;
stateMachine.t__builder=AsyncTaskMethodBuilder.Create();
stateMachine.1_uu状态=-1;
stateMachine.t__builder.Start(参考stateMachine);
返回stateMachine.t\u builder.Task;
}

有两种符号对我来说是新的。第一个是
d\u 0
。第二个是状态机。当我自己尝试它们时,两者都不起作用,所以我怀疑它只供编译器使用。但是我很难找到关于这个符号的更多信息。

与标记泛型的括号(例如,
任务
)不同,它们没有特殊意义。它们正是编译器生成的-标识符在IL中有效,但在C#中无效。

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

有人在上面发了一篇帖子,展示了C编译器(当时-可能会发生变化)所做的很多事情——你看到的所有随机小字符(例如
4
中的
4
)都有隐含的含义。编辑:在这里:生成名称的代码是(借用自)