共用方式為


F# 型別

本主題描述 F# 中所使用的型別以及 F# 型別的命名及描述方式。

F# 型別摘要

有些型別被視為「基本型別」(Primitive Type),例如布林型別 bool 以及各種大小的整數和浮點型別,包括位元組和字元的型別。 這些型別將在基本型別 (F#) 加以說明。

其他內建在語言的型別包含 Tuple、清單、陣列、序列、記錄和已區分的聯集。 如果您有其他 .NET 語言使用經驗並要學習 F#,您應該閱讀每個上述型別的主題。 這些型別詳細資訊的連結包含在本主題中的相關主題一節。 這些 F# 特定型別支援函式程式設計語言通用的程式設計風格。 F# 程式庫中有與許多型別關聯的模組支援這些型別的一般作業。

函式的型別包含參數型別和傳回型別的相關資訊。

.NET Framework 是物件型別、介面型別、委派型別等的來源。 您可以定義自己的物件型別,就好像任何其他 .NET 語言一樣。

此外,F# 程式碼可以定義別名,也稱為「型別縮寫」(Type Abbreviation),這是型別的替代名稱。 當型別在未來可能會變更,而且您要避免變更依賴此型別的程式碼時,可以使用型別縮寫。 或者,您可以將型別縮寫做為型別的易記名稱,讓程式碼更容易閱讀及了解。

型別語法

在 F# 程式碼中,通常必須寫出型別名稱。 每個型別都有語法形式,您可以在型別附註、抽象方法宣告、委派宣告、簽章和其他建構中使用這些語法形式。 每當您在解譯器中宣告新程式建構時,解譯器都會列印建構名稱及其型別語法。 此語法可能只是使用者定義型別的識別項或是 int 或 string 等的內建識別項,但對於更複雜的型別,語法也會更複雜。

下表顯示 F# 型別的型別語法各個面相。

型別

型別語法

範例

基本型別

type-name

int

float

string

彙總型別 (類別、結構、聯集、記錄、列舉等等)

type-name

System.DateTime

Color

型別縮寫

type-abbreviation-name

bigint

完整限定型別

namespaces.type-name

modules.type-name

namespaces.modules.type-name

System.IO.StreamWriter

陣列

type-name[] 或

type-name 陣列

int[]

array<int>

int array

二維陣列

type-name[,]

int[,]

float[,]

三維陣列

type-name[,,]

float[,,]

Tuple

type-name1 * type-name2 ...

例如,(1,'b',3) 具有型別 int * char * int

泛型型別

type-parameter generic-type-name

generic-type-name<type-parameter-list>

'a list

list<'a>

Dictionary<'key, 'value>

建構的型別 (已提供特定型別引數的泛型型別)

type-argument generic-type-name

generic-type-name<type-argument-list>

int option

string list

int ref

option<int>

list<string>

ref<int>

Dictionary<int, string>

有單一參數的函式型別

parameter-type1 -> return-type

採用 int 並傳回 string 的函式具有型別 int -> string

有多個參數的函式型別

parameter-type1 -> parameter-type2 -> ... -> return-type

採用 int 和 float 並傳回 string 的函式具有型別 int -> float -> string

當做參數的高順序函式

(function-type)

List.map 具有型別 ('a -> 'b) -> 'a list -> 'b list

委派

delegate of function-type

delegate of unit -> int

彈性型別

#type-name

#System.Windows.Forms.Control

#seq<int>

相關主題

主題

描述

基本型別 (F#)

描述內建簡單型別,例如整數型別、布林型別和字元型別。

單位類型 (F#)

描述 unit 型別,這個型別只有一個值並以 () 表示,相當於 C# 中的 void 和 Visual Basic 中的 Nothing。

Tuple (F#)

描述 Tuple 型別,這個型別是由雙重組、三重組、四重組等群組之任何型別的關聯值所組成。

選項 (F#)

描述選項型別,這個型別可能有值或是空白。

清單 (F#)

描述清單,是一連串已排序且不可變的項目,而且所有項目都是相同型別。

陣列 (F#)

描述陣列,是相同型別的可變元素排序集合,這些元素佔用連續的記憶體區塊且有固定大小。

序列 (F#)

描述序列型別,表示一連串的邏輯值;需要時才會計算個別值。

資料錄 (F#)

描述記錄型別,即具名值的小型彙總。

已區分的聯集 (F#)

描述已區分的聯集型別,其值可以是一組可能型別中的任何一個型別。

函式 (F#)

描述函式值。

類別 (F#)

描述類別型別,即對應於 .NET 參考型別的物件型別。 類別型別可以包含成員、屬性、已實作的介面和基底型別。

結構 (F#)

描述 struct 型別,即對應於 .NET 實值型別的物件型別。 struct 型別通常表示小型資料彙總。

介面 (F#)

描述介面型別,這類型別表示一組提供特定功能但不含任何資料的成員。 介面型別必須由物件型別實作才能使用。

委派 (F#)

描述將函式表示為物件的委派型別。

列舉 (F#)

描述列舉型別,其值屬於一組具名值。

屬性 (F#)

描述可用來指定另一個型別中繼資料的屬性。

例外狀況類型 (F#)

描述可指定錯誤資訊的例外狀況。