如何在代码中检测装箱/拆箱

时间:2015-11-05 16:01:18

标签: c# visual-studio-2015 boxing

我有兴趣找到解决方案中发生装箱或拆箱的所有地方。我知道我可以像这样使用ildasm:

Ildasm.exe yourcomponent.dll /text | findstr box

但我不想看MSIL级别。 有一个简单的方法吗?

3 个答案:

答案 0 :(得分:0)

你可以用FXCOP做到这一点:(带有例子的旧文章)

Link - Three Vital FXCop Rules

答案 1 :(得分:0)

这是#Roslyn的一个完美的用例。像往常一样从微软和Jon Skeet推出的编译器即服务是绝对正确的。我正在写一本关于Roslyn的书,以展示如何使用Roslyn进行这些代码分析,并通过JavaScript进行一些引人注目的可视化。

以下是查找拳击通话的代码。但是范围解析起着重要作用。但这个例子应该让你开始。在https://www.amazon.com/Source-Analytics-Roslyn-JavaScript-Visualization/dp/1484219244?ie=UTF8& 版本 = 1& 条目 = 0

预订您的副本以获得更多此类内容

https://gist.github.com/sudipto80/43efdecb878cac17b340cda2c281c3b3

答案 2 :(得分:0)

Clr Heap Allocation Analyzer是一个免费的Visual Studio插件,可以检测许多(但不是全部)拳击形式,并会突出显示您的源代码并提供工具提示说明。

您还可以使用Visual Studio Diagnostic Tools来分析内存分配。这不会直接揭示拳击,但是当你在堆上看到一个值类型时,你知道它已被装箱(例如,你会看到对Int32的引用需要12个字节)。