C#中的不安全代码

Pup*_*ppy 13 c# unsafe

在C#中,不安全代码有哪些限制?例如,我可以像使用C或C++一样进行几乎任意的指针转换和算术运算吗?

cod*_*zen 12

是.当不安全时,所有投注都会被取消.

这是"不安全"背后的想法 - 可以删除可验证类型的"安全性",你可以从一种类型的指针转​​换为另一种类型的指针,而不会让运行时阻止你自己在脚下射击,如果你所以渴望 - 就像C或C++一样.

这是在C#中使用不同指针类型的示例:

fixed (Byte* dstBytes = &currentImage[0])
{
    var dstBuffer = (Int64*)dstBytes;
    const int blockCount = ImageSizeInBytes / sizeof(Int64);

    for (var j = 0; j < blockCount; j++)
    {
        dstBuffer[j] = srcBuffer[j];
    }
}
Run Code Online (Sandbox Code Playgroud)

注意数组的类型是Byte[],但是在我得到之后我Byte*可以将其转换为Int64*并且一次使用8个字节.