如何在VB.Net中使用不安全代码

本文关键字:不安全 代码 Net VB | 更新日期: 2023-09-27 17:55:04

我想知道VB。. NET等价于以下c#代码:

    unsafe
    {
        byte* pStart = (byte*)(void*)writeableBitmap.BackBuffer;
        int nL = writeableBitmap.BackBufferStride;
        for (int r = 0; r < 16; r++)
        {
            for (int g = 0; g < 16; g++)
            {
                for (int b = 0; b < 16; b++)
                {
                    int nX = (g % 4) * 16 + b;                            
                    int nY = r*4 + (int)(g/4);
                    *(pStart + nY*nL + nX*3 + 0) = (byte)(b * 17);
                    *(pStart + nY*nL + nX*3 + 1) = (byte)(g * 17);
                    *(pStart + nY*nL + nX*3 + 2) = (byte)(r * 17);
                 }
            }
        }
   }

如何在VB.Net中使用不安全代码

看起来是不可能的。

From this post

VB。. NET比c#在这方面。它不允许使用任何不安全的代码环境。

VB。. NET不允许使用不安全代码,但您可以在安全托管:

中执行代码。
Dim pStart As IntPtr = AddressOf (writeableBitmap.BackBuffer())
Dim nL As Integer = writeableBitmap.BackBufferStride
For r As Integer = 0 To 15
    For g As Integer = 0 To 15
        For b As Integer = 0 To 15
            Dim nX As Integer = (g Mod 4) * 16 + b
            Dim nY As Integer = r * 4 + CInt(g ' 4)
            Marshal.WriteInt32((pStart + nY * nL + nX * 3 + 0),(b * 17))
            Marshal.WriteInt32((pStart + nY * nL + nX * 3 + 1),(g * 17))
            Marshal.WriteInt32((pStart + nY * nL + nX * 3 + 2),(r * 17))
        Next
    Next
Next

不可能,因为vb.net不支持不安全代码