F# 如何确定系统的大小。类型值?

F# 如何确定系统的大小。类型值?,f#,F#,如何确定类型值的大小 let typ = if true then (123).GetType() else "asdf".GetType();; let sz = sizeof<typ> let sz = sizeof<typ>;; ----------------^^^ error FS0039 让typ=如果为true,则为(123).GetType()否则为“asdf”.GetType();; 设sz=sizeof 设sz=sizeof;; -----

如何确定类型值的大小

let typ = if true then (123).GetType() else "asdf".GetType();;
let sz = sizeof<typ>

  let sz = sizeof<typ>;;
  ----------------^^^
error FS0039
让typ=如果为true,则为(123).GetType()否则为“asdf”.GetType();;
设sz=sizeof
设sz=sizeof;;
----------------^^^
错误FS0039

一种解决方案是使用Marshal.SizeOf(obj),但可能存在另一种解决方案?

这将获得类型变量的大小:

sizeof<System.Type>
sizeof

提示是
<…>
需要是一个类型,而不是一个变量。

我认为
Marshal.SizeOf
是您在这里寻找的。请注意,该方法有两个重载

  • Marshal.SizeOf(t)
    ()将
    System.Type
    作为参数,并返回由
    System.Type
    值表示的类型的大小(我相信这就是您想要的)

  • Marshal.SizeOf(structure)
    ()接受任何
    对象
    ,并根据运行时类型返回结构的大小


sizeofor您需要知道大小的目的是什么?我认为这不是OP所要求的-这只是返回
系统的大小。Type
引用类型(不是它所代表的值类型)。