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

时间:2013-06-15 18:14:27

标签: c# .net syntax async-await notation

我正在阅读Async in C# 5.0,编译器转换部分包含此代码段:

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。当我自己尝试时它们都不起作用,所以我怀疑它只供编译器使用。但是我在寻找有关这种符号意图的更多信息时遇到了麻烦。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

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