为什么不安全的关键字名称如此?

时间:2018-01-24 17:15:47

标签: c# pointers unsafe

我刚学会了C#中unsafe关键字的用法,我想知道为什么它可以这样命名。使用这样的名称,它的功能并不明显,并且它似乎与提供的功能不密切相关。

为了获得我在不安全环境中的最新知识,您可以直接使用指针以及*&运算符。

我所做的一个(哑)假设是*运算符也适用于乘法,这会导致逻辑错误甚至语法错误,这意味着使用它是不安全的。最有可能的情况并非如此。

提前致谢。

2 个答案:

答案 0 :(得分:2)

  

为了获得我在不安全环境中的最新知识,你可以直接使用指针和*和&运算符。

这正是它不安全的部分。不一定是&运算符,但处理指针不会进行任何边界检查,以确保您仍然在您正在使用的对象的范围内。你可以很容易地超越数组的末尾。这使C#提供的一些安全性无效(在需要它的情况下有利于性能)。但如果你的安全性降低,我认为unsafe是一个非常好的关键词。

答案 1 :(得分:1)

作为一名老C程序员,我可以理解为什么这看起来很奇怪。但简单的答案是,这就是事情的发展方向。 .NET平台确保我们分配的内存将被清理,并且我们无法读取或写入我们不应该记忆的内存。所有人都接受的是过去开发人员的责任。

unsafe关键字描述的平台可能无法完全保证的代码是正确的。