共用方式為


F# 類型

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

F# 型別的摘要

某些型別會被視為基本型別,例如布林值型別 bool 和各種大小的整數和浮點數型別,其中包括位元組和字元的型別。 這些型別會在基本型別中描述。

內建於語言中的其他型別包括元組、清單、陣列、序列、記錄和區分聯合。 如果您有其他.NET 語言的使用經驗並且正在學習 F#,應該閱讀其中每個型別的主題。 這些 F# 專屬型別支援功能性程式設計語言通用的程式設計樣式。 其中許多型別在 F# 程式庫中都有相關聯的模組,可支援這些型別的一般作業。

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

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

此外,F# 程式碼可以定義別名,這些別名會以型別縮寫命名,也就是型別的替代名稱。 當型別可能會在未來變更,而且您想要避免變更相依於型別的程式碼時,您就可以使用型別縮寫。 或者,您可以使用型別縮寫作為型別的自訂名稱,讓程式碼更容易閱讀和瞭解。

F# 提供實用的集合型別,其設計訴求包含須搭配功能性程式設計使用。 使用這些集合型別可協助您撰寫樣式功能性更高的程式碼。 如需詳細資訊,請參閱 F# 集合型別

型別的語法

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

下表顯示 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 型別
Generic Type - 泛型類型 type-parametergeneric-type-name



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

list<'a>

Dictionary<'key, 'value>
建構型別 (提供特定型別引數的泛型型別) type-argumentgeneric-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 接受 intfloat 並傳回 string 的函式具有 int -> float -> string 型別
作為參數的較高順序函式 (function-type) List.map 的型別為 ('a -> 'b) -> 'a list -> 'b list
delegate function-type 的委派 delegate of unit -> int
彈性型別 #type-name #System.Windows.Forms.Control

#seq<int>
主題 說明
基本類型 描述內建的簡單型別,例如整數型別、布林值型別和字元型別。
單位類型 描述 unit 型別,該型別具有一個以 () 表示的值;相當於 C# 中的 void 和 Visual Basic 中的 Nothing
元組 描述元組型別,此型別是由分成兩個一組、三個一組和四個一組等等的任何型別的相關聯值所組成。
選項 描述選項型別,該型別可能具有值或空白。
清單 描述清單,也就是型別皆相同、已排序且不可變的元素系列。
陣列 描述陣列,這些陣列是型別相同且可變的已排序元素集合,這些元素會佔用連續記憶體區塊且大小固定。
序列 描述序列型別,其表示值的邏輯數列;個別值只會在需要時計算。
記錄 描述記錄型別,這是具名值的小型彙總。
已區分的聯集 描述區分聯合型別,其值可以是一組可能型別中的任一個值。
函數 描述函式值。
類別 描述類別型別,這是對應至 .NET 參考型別的物件型別。 類別型別可以包含成員、屬性、實作的介面和基底型別。
結構 描述 struct 型別,這是對應至 .NET 實值型別的物件型別。 struct 型別通常代表小型的資料彙總。
介面 描述介面型別,這些型別代表提供特定功能但不包含資料的一組成員。 介面型別必須由物件型別實作才有用。
委派 描述委派型別,其代表作為物件的函式。
列舉 描述列舉型別,其值屬於一組具名值。
屬性 描述屬性,這些屬性可用來指定另一種型別的中繼資料。
例外狀況類型 描述指定錯誤資訊的例外狀況。