【发布时间】:2016-04-29 04:00:06
【问题描述】:
过去我从来不需要使用 unsafe,但现在我需要它来使用指针来操作位图。
我找不到任何说明其他情况的文档,但我想更好地了解 unsafe 的工作原理以及在循环内部或外部使用它是否有任何区别。
这样做更好吗:
unsafe
{
for (int x = 0; x < maxX; x++)
{
for (int y = 0; y < maxY; y++)
{
//Unsafe pointer operations here.
}
}
}
还是要做什么?:
for (int x = 0; x < maxX; x++)
{
for (int y = 0; y < maxY; y++)
{
unsafe
{
//Unsafe pointer operations here.
}
}
}
【问题讨论】:
-
我认为最好做第二个,考虑到 for 循环本身不需要是
unsafe并且您希望最小化unsafe区域。除非,在循环中调用它会产生某种开销。 -
@AustinWBryan - 根据我的阅读,您似乎是对的,这就是我们正在做的,但我想更好地了解有什么区别。
-
@Dzyann 似乎不是一个容易回答的问题.. 你可能需要耐心等待.. ;) 我也有兴趣知道解释
-
我非常怀疑生成的代码有什么不同。主要区别在于减少代码的
unsafe占用空间。为什么在 unsafe 块中包含超出您需要的内容?它只是创建了额外的代码行,您可以在其中犯超出规范的错误。 -
我认为第一段代码会让人们感到困惑,让他们想知道为什么循环是
unsafe。