使用 dotTrace 探查器时,我收到大量 NamespaceName.ClassName.ctor>b__11
的电话
(当我在应用程序上使用 Equatec 分析器时,我得到了类似的结果,神秘函数被称为 NamespaceName.ClassName.<ctor>b__11
)。我首先假设它是 ClassName
的构造函数但是 ClassName
的构造函数内部的断点只被击中一次。
我假设这是自动生成的函数,如果是,我怎样才能找到它被调用的地方?它和 ClassName
的构造函数有什么关系?如果构造函数只被调用一次?
最佳答案
这可能是构造函数中声明的 lambda。您是否使用=>
在构造函数中订阅了事件?语法,或者其他会被频繁调用的东西?
当您使用 lambda 时,C# 编译器会将其转换为私有(private)方法,并使用该方法的委托(delegate)。 (如果您正在进行变量捕获,还有其他花哨的技巧。)
看看 Reflector 中的其他类,看起来 C# 编译器在将每个 lambda 转换为方法时只是对它们进行编号,使用您已经注意到的命名约定 <methodName>b__<number>
,只需对每一个进行编号即可。
关于c# - ClassName.ctor>b__11 在 dotTrace Profiler 中代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11302589/