是否有一个很好的参考,列出哪些F#类型是值类型,哪些是引用类型?或者,是否有一种查询类型以确定它的好方法?是的,我知道类的东西是引用类型,结构的东西是值类型。同时,对于F#类型,这种区别对我来说并不总是直观的。例如,tuple types are reference types。显然,记录类型也是如此。
答案 0 :(得分:4)
您始终可以使用F#Interactive检查某些内容是否为值类型:
typeof<int * int>.IsValueType
正如您所提到的,元组是引用类型,因此返回false
。
我同意差异并不总是很清楚。通常,您在F#中使用的大多数类型都是引用类型(以及您定义的所有F#类型,但struct types除外)。
string
是参考类型DateTime
和TimeSpan
以及KeyValuePair
(这有时令人困惑,因为它与元组非常相似)。Struct
。