2016-12-09 62 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

回答