解释C#堆栈跟踪

解释C#堆栈跟踪,c#,stack-trace,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() MyNamespace.WCFService.b_uu4(任务'1t)中的 在MyN

我有一个C#堆栈跟踪,其中包含如下行:

at MyNamespace.WCFService.<DispatchWork>b__4(Task`1 t)
at MyNamespace.TestMethods.<RunTestCode>d__0.MoveNext()
at MyNamespace.ServiceProxy.<CallService>d__4a.MoveNext()
MyNamespace.WCFService.b_uu4(任务'1t)中的

在MyNamespace.TestMethods.d__0.MoveNext()中
在MyNamespace.ServiceProxy.d__4a.MoveNext()中
b_uu4
d_u0
d_u4a
是什么意思

b__
d__
之间有什么区别?除了
d
b
之外,还能有其他字符吗


\uuuu\uu
之后是什么内容?

这些名称由编译器自动生成,用于临时变量、产量指令、lambda和

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


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

没有什么特别之处。仅自动生成的类和方法。使用lambdas、yield或async时非常常见。您是否对编译器应用的特定命名方案有疑问?以下是Eric Lippert的详细解答: