如何使用Mono.Cecil确定值类型的大小

时间:2010-11-30 13:14:55

标签: .net nullable sizeof value-type mono.cecil

我正在寻找一种方法来确定Mono.Cecil中值类型(TypeReference)的字节大小。

我需要它来优化Nullable相等比较代码生成。

  • 如果值类型大小> 4,首先比较HasValue,然后比较值。
  • 如果值类型大小< = 4,请首先比较GetValueOrDefault,然后比较HasValue。

但要这样做,我需要以某种方式获得sizeof(T)。

1 个答案:

答案 0 :(得分:1)

它不是100%完美(因为因为将根据32/64位拱而变化)但是Gendarme有代码来完成这项任务。看看里面的SizeOf方法:

https://raw.github.com/mono/mono-tools/master/gendarme/rules/Gendarme.Rules.Performance/AvoidLargeStructureRule.cs