共用方式為


不變性

中的所有類型都是實值型別。 Q# 沒有參考或指標的概念。 相反地,它可讓您透過指派表達式,將新值重新指派給先前宣告的變數。 例如,Int 類型的變數或類型變數 Int[]的重新指派行為沒有區別。 請考慮下列語句序列:

    mutable arr1 = new Int[3];
    let arr2 = arr1;
    arr1 w/= 0 <- 3;

第一個語句會具現化整數的新數位 [0,0,0],並將它指派給 arr1。 下一個語句會將該值指派給名稱為 arr2的變數。 最後一個語句會根據具有相同值的 arr1,建立新的數位列實例,但索引0的值設為3除外。 然後,新建立的陣列會指派給變數 arr1。 最後一行會使用 評估與重新指派語句的縮寫語法,,而且相當於已撰寫為 arr1 = arr1 w/ 0 <- 1;
執行三個語句之後,arr1 會包含值 [3,0,0],而 arr2 保持不變,並包含值 [0,0,0]

因此,Q# 清楚區分句柄的可變性和型別的行為。 Q# 內的可變性是適用於 符號 而非類型或值的概念;它適用於可讓您存取值而非值本身的句柄。 它 隱含或明確表示於類型系統中

當然,這隻是正式定義行為的描述:在幕後,實際實作會使用參考計數配置,以避免儘可能複製記憶體。 只要只有一個目前有效的句柄可存取特定值,修改才會特別完成。