簡體   English   中英

如果將C#字符串與F#analogue進行比較,為什么C#字符串的標題為“不可變”?

[英]Why does C# string have a title “Immutable” if to compare it with F# analogue?

我已經閱讀了那些較舊的主題:

但是,如果將它與F#analogue進行比較,我無法理解immutable這個詞的含義:

open System
let data = "London"
data <- "123"
Console.WriteLine data

由於下一個原因,這個將無法編譯:

錯誤FS0027:此值不可變。 考慮使用mutable關鍵字,例如'let mutable data = expression'。

所以...如果要比較F#行為和C#one,似乎F#具有不變性的真正含義,或者我不明白這個術語的真正含義......

我們來看看C#變體:

class Program
{
    static void Main()
    {
        var a = "London";
        a = "123";
        System.Console.WriteLine(a);
    }
}

輸出將是: 123

讓我們從下一篇文章中獲取信息: 為什么字符串在.NET中是不可變的?

字符串附加

老實說,如果要查看這張圖並將其與F#變體進行比較,我看不到不變性......但是,據我所知,SO上有超過100人(問題發表在這個問題的頂部)不能錯,並為這種意義給出錯誤的名稱。

請告訴我為什么C#字符串名為immutable ,如果我可以更改它的值? 如果要將其與F#樣本進行比較,則單個含義的結果會有所不同。

您將F#中變量的不變性與C#中對象的不變性混淆起來。

在C#中,您可以更改表示變量指向的字符串的對象。 但是你不能改變關於那個對象的任何東西,因此對象是不可變的。

在F#中,您無法更改變量具有的值,因此該變量也是不可變的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM