2

在使用 dotTrace 分析器时,我收到了很多调用NamespaceName.ClassName.ctor>b__11 (当我在我的应用程序上使用 Equatec 分析器时,我得到了类似的结果,调用了神秘的函数NamespaceName.ClassName.<ctor>b__11)。我首先假设它是 的构造函数,ClassName但是构造函数内部的断点ClassName只被击中一次。我假设这是自动生成的函数,如果它是我如何找到它被调用的位置?ClassName如果构造函数只被调用一次,它与构造函数有什么关系?

4

1 回答 1

4

它可能是在构造函数中声明的 lambda。您是否使用语法订阅了构造函数中的事件=>,或者其他会被频繁调用的事件?

当您使用 lambda 时,C# 编译器会将其转换为私有方法,并使用该方法的委托。(如果您正在进行变量捕获,还有其他花哨的技巧。)

查看 Reflector 中的其他类,看起来 C# 编译器在将每个 lambda 转换为方法时只是简单地对它们进行编号,使用您已经注意到的命名约定<methodName>b__<number>, 只是对每个 lambda 进行编号。

于 2012-07-02T23:34:05.347 回答