列出哪些F#类型是值类型以及哪些是引用类型的参考

时间:2015-03-27 22:41:12

标签: .net f#

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

1 个答案:

答案 0 :(得分:4)

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

typeof<int * int>.IsValueType

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

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

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