我有一个包含这样的行的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__4
,d__0
和d__4a
是什么意思?
b__
和d__
之间有什么区别?可以有任何其他字符(d
和b
除外)吗?
__
后的内容是什么?
答案 0 :(得分:3)
这些名称由编译器自动生成临时变量,yield指令,lambdas和......
只有两种情况可以看到这些名称,其中一种是编译器生成的,另一种是当有人选择对其程序集进行模糊处理时。混淆的程序集的方法和类也有这样的名称。
有关生成名称时编译器执行的操作的详细信息,请参阅this。