解释C#堆栈跟踪

时间:2013-11-07 08:55:32

标签: c# stack-trace

我有一个包含这样的行的C#堆栈跟踪:

at MyNamespace.WCFService.<DispatchWork>b__4(Task`1 t)
at MyNamespace.TestMethods.<RunTestCode>d__0.MoveNext()
at MyNamespace.ServiceProxy.<CallService>d__4a.MoveNext()

b__4d__0d__4a是什么意思?

b__d__之间有什么区别?可以有任何其他字符(db除外)吗?

__后的内容是什么?

1 个答案:

答案 0 :(得分:3)

这些名称由编译器自动生成临时变量,yield指令,lambdas和......

只有两种情况可以看到这些名称,其中一种是编译器生成的,另一种是当有人选择对其程序集进行模糊处理时。混淆的程序集的方法和类也有这样的名称。

有关生成名称时编译器执行的操作的详细信息,请参阅this