【问题标题】:Reference that tabulates which F# types are value types and which are reference types列出哪些 F# 类型是值类型以及哪些是引用类型的引用
【发布时间】:2015-03-27 22:41:11
【问题描述】:

是否有一个很好的参考来列出哪些 F# 类型是值类型以及哪些是引用类型?或者,有没有一种好方法来查询类型以确定它是什么?是的,我知道类是引用类型,结构是值类型。同时,对于 F# 类型,这种区别对我来说并不总是直观的。例如,tuple types are reference types。显然,记录类型也是如此。

【问题讨论】:

    标签: .net f#


    【解决方案1】:

    您始终可以使用 F# Interactive 检查某项是否为值类型:

    typeof<int * int>.IsValueType
    

    正如您提到的,元组是引用类型,因此返回 false

    我同意差异并不总是很明显。通常,您在 F# 中使用的大多数类型都是引用类型(以及您定义的所有 F# 类型,struct types 除外)。

    • 原始类型(数值和布尔值)是值类型
    • 但是string是引用类型
    • 在 .NET 中定义了几个结构类型,例如 DateTimeTimeSpan 以及 KeyValuePair(这有时会令人困惑,因为这与元组非常相似)。
    • F# 元组、记录、可区分联合、列表、数组都是引用类型
    • F# 对象类型也是引用类型,除非它们被标记为 Struct

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-31
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2012-05-01
      • 2011-01-20
      • 2015-10-31
      相关资源
      最近更新 更多