解释 C# 堆栈跟踪

Seb*_*ski 5 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()
Run Code Online (Sandbox Code Playgroud)

b__4d__0、 和是什么d__4a意思?

b__和 和有什么区别d__d除了和之外还有其他字符吗b

后面的东西是什么__

小智 3

这些名称是由编译器自动为临时变量、yield 指令、lambda 等生成的。

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

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