How can I use unsafe code in VB.Net?
I would like to know the VB.NET equivalent of the following C# code:
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);
}
}
}
}
Looks like it's not possible.
From this post
VB.NET is more restrictive than C# in this respect. It does not permit the use of unsafe code under any circumstances.
Not possible, since vb.net does not support unsafe code.
VB.NET does not allow use unsafe code, but you can do your code in safe managed:
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
精彩评论