2016-12-09 63 views
0

我爲什麼要這樣做?這是一個錯誤嗎?更改只讀字符串字段

Debug.WriteLine (System.Boolean.FalseString); // output: "False" 

fixed (char* xx = System.Boolean.FalseString) { 
    xx[1] = 'X'; 
} 

Debug.WriteLine (System.Boolean.FalseString); // output: "FXlse" 

然後,FalseString有新的價值。

我不知道是否是一個錯誤,因爲FalseString是一個只讀字段。

是否存在安全問題?

託管模型不是很安全嗎?

我可以從衛星庫進行更改,可以使主進程崩潰嗎?

+4

有一個關鍵字被稱爲「不安全」的原因 – Dispersia

+1

這是什麼讓你感到困惑?你正在進入記憶並以一種不關心只讀的方式進行修改。 – byxor

+0

我並不困惑。 我知道我正在用指針訪問內存。 在我看來,這在我看來是一個設計錯誤和框架的概念。 我只是認爲readonly是在內存的受保護或只讀(受控)部分中創建的。 實際上,「不安全」一詞被放置在不安全的代碼中,這是令人困惑的。 只讀應該是隻讀的,不安全的應該釋放我自己的數據並且不允許我修改沒有標記爲「不安全」的代碼數據 – jmmcba

回答