F#在运行时获取类型参数的大小

时间:2016-08-10 15:58:40

标签: f#

假设我有一个功能:

let foo (a : 'T[])

我想知道T

的大小

一种方法是:

  let t = a.[0].GetType() 
  let size = Marshal.SizeOf(t)             
  if size < 4 then //something
  else //something else

但这有一些问题。 GetType很慢,我必须首先检查数组是否为空。添加另一步和更多代码。是否有可能改善这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用typeof:

let t = typeof<'T>
let size = Marshal.SizeOf(t)             
if size < 4 then //something
else //something else