这个包含尖括号的符号是什么意思
本文关键字:符号 是什么 意思 包含尖 | 更新日期: 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表达式是一个匿名方法。但是编译器需要给它一个名字,所以这些方法是由编译器生成的,不适合人类阅读。