列出哪些 F# 类型是值类型,哪些是引用类型的引用
Reference that tabulates which F# types are value types and which are reference types
是否有一个很好的参考来列出哪些 F# 类型是值类型,哪些是引用类型?或者,有没有一种查询类型以确定它是哪种类型的好方法?是的,我知道 类 是引用类型,而结构是值类型。同时,对于 F# 类型,这种区别对我来说并不总是直观的。例如,tuple types are reference types。显然,记录类型也是如此。
您始终可以使用 F# Interactive 检查某物是否为值类型:
typeof<int * int>.IsValueType
如您所述,元组是引用类型,因此 returns false
。
我同意区别并不总是很明显。通常,您在 F# 中使用的大多数类型都是引用类型(以及您定义的所有 F# 类型,struct types 除外)。
- 基本类型(数字和布尔值)是值类型
- 但是
string
是引用类型
- .NET 中定义了一些结构类型,例如
DateTime
和 TimeSpan
以及 KeyValuePair
(这有时会造成混淆,因为这与元组非常相似)。
- F#元组、记录、可区分联合、列表、数组都是引用类型
- F# 对象类型也是引用类型,除非它们被标记为
Struct
.
是否有一个很好的参考来列出哪些 F# 类型是值类型,哪些是引用类型?或者,有没有一种查询类型以确定它是哪种类型的好方法?是的,我知道 类 是引用类型,而结构是值类型。同时,对于 F# 类型,这种区别对我来说并不总是直观的。例如,tuple types are reference types。显然,记录类型也是如此。
您始终可以使用 F# Interactive 检查某物是否为值类型:
typeof<int * int>.IsValueType
如您所述,元组是引用类型,因此 returns false
。
我同意区别并不总是很明显。通常,您在 F# 中使用的大多数类型都是引用类型(以及您定义的所有 F# 类型,struct types 除外)。
- 基本类型(数字和布尔值)是值类型
- 但是
string
是引用类型 - .NET 中定义了一些结构类型,例如
DateTime
和TimeSpan
以及KeyValuePair
(这有时会造成混淆,因为这与元组非常相似)。 - F#元组、记录、可区分联合、列表、数组都是引用类型
- F# 对象类型也是引用类型,除非它们被标记为
Struct
.