[英]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.