共用方式為


類型宣告

Q# 支援使用者定義的 struct 類型。 struct 類型類似於 F# 中的記錄類型;它們不可變,但支援 複製和更新 建構。

結構類型

struct 類型只能包含具名專案,而且不支援匿名專案。 雖然無法巢狀專案,但支援具名專案的任何組合。

例如,下列宣告會定義結構 Complex,其具有兩個具名專案 RealImaginary,這兩個類型為 Double

struct Complex {
    Real : Double,
    Imaginary : Double,
}

您可以透過其名稱或 解構 來存取包含的專案(如需詳細資訊,請參閱 專案存取)。 您也可以透過 解除包裝運算子,存取圖形符合宣告中所定義專案的所有專案的 Tuple,

struct 類型有兩個原因很有用。 首先,只要使用已定義型別的連結庫和程式會透過其名稱存取專案,而不是透過解構來擴充類型,以在稍後包含其他專案,而不會中斷任何連結庫程序代碼。 因此,通常不建議透過解構存取專案。

其次,Q# 可讓您傳達特定數據類型的意圖和期望,因為兩個 struct 類型的值之間沒有自動轉換,即使其專案類型相同也一樣。

結構建構函式

當編譯程式讀取 struct 定義時,編譯程式會自動產生新 struct 類型的建構函式。 針對上一個範例中的 Complex 結構,您可以使用 建立 實例

let complexPair = Complex(1.4, 2.1);

例如,您也可以使用 new 關鍵詞來定義實例

let complexPair = new Complex { Real = 1.4, Imaginary = 2.1 };

您也可以使用 ... 語法複製現有的結構

let copyPair = new Complex { ...complexPair };

複製時,您可以指定要變更的個別欄位

let updatedPair = new Complex { ...complexPair, Real = 3.5 };