ClassName.ctor> b__11在dotTrace Profiler中代表什么?

时间:2012-07-02 23:32:09

标签: c# profiler dottrace

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

1 个答案:

答案 0 :(得分:3)

它可能是构造函数中声明的lambda。您是否使用=>语法在构造函数中订阅了一个事件,还是经常调用的其他事件?

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

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