过去我从来不需要使用不安全的方法,但是现在我需要它与处理位图的指针一起使用。

我找不到任何其他说明的文档,但是我想更好地理解不安全的工作原理,以及在循环内还是循环外使用它是否有任何区别。

这样做更好吗?

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.
        }
    }
}

最佳答案

unsafe关键字是一个标记,用于告诉编译器您知道自己在做什么。其主要目的类似于记录您的代码:unsafe块显示您指定为非托管区域的代码部分;对代码的实际执行没有影响。

考虑到这一点,有意义的是,尽可能减少此不安全区域的大小,这意味着您的第二种方法比第一种更好。

值得一提的是,当将不安全的块放在代码的最小可能部分周围时,其他两种选择(即标记方法和使用unsafe标记类)也不如该方法。

关于c# - 在循环内部或外部使用不安全措施有什么区别吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34948627/

10-09 10:18