4

我有一个 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__?可以有任何其他字符(除了db)?

后面的东西是什么__

4

1 回答 1

3

这些名称由编译器自动为临时变量、yield 指令、lambda 和 ...

只有两种情况可以看到这些名称,一种是编译器生成的,另一种是有人选择混淆他的程序集。混淆程序集的方法和类也有类似的名称。

有关生成名称时编译器所做的更多详细信息,请参阅内容(在注释中指出)。

于 2013-11-07T09:18:42.943 回答