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

标签 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 很慢,我必须首先检查数组是否为空。添加另一个步骤和更多代码。是否可以对此进行改进?

最佳答案

您可以使用 typeof:

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

关于F# 在运行时获取类型参数的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38878340/

相关文章:

algorithm - 在 F# 中计算移动平均线

f# - 测试序列中所有项目是否相同的表达式

f# - 团结, Prism ,FSharp

f# - 封装可变状态

c# - F# 中使用的运算符 (-) 引发 C# 不支持指定方法的异常

types - F#在模式匹配中返回不同的类型

memory-leaks - Microsoft.FSharp.Control.Mailbox 中的内存泄漏?

c# - F# 轻量级脚本环境

.net - FSharp Interactive 无法启动;找不到System.Runtime.dll

macos - 适用于 Mac 的最佳 F# IDE