Как конвертировать ... Vb. net небезопасных указателей? - PullRequest
0 голосов
/ 03 мая 2020

Как перевести этот код с c# на vb. net? Пожалуйста, помогите

Это от c#

if (local> 0)

{// Локальные исправления устанавливают смещения для данных, расположенных в других местах в этом разделе

   IntPtr start = data + section->_localPatchesOffset; 
   LocalPatch* patch = (LocalPatch*)start; 

     while ((int)patch - (int)start < local && patch->_dataOffset >= 0) 

     { //Make the pointer offset relative to itself so it's self-contained 

       int ptrOffset = patch->_pointerOffset; 
       int* ptr = (int*)(data + ptrOffset); 
       *ptr = patch->_dataOffset - ptrOffset; 
       patch++; 

     } 

}

Или у меня есть этот образец из c ...

Что именно означает * (байт **) в c

Например, у меня есть некоторый байтовый массив (например, MemoryStream, загруженный из файла отверстий ....)

Dim arr As Byte () = New Byte () {1, 2, 33, 4, 55, 6, 7, 8, 9, 10, 10, 114, .....}

Например, 33 - это (с начального смещения 3), а 114 - это (с смещением 12). (fromoffset) = Arr (tooffset)

Это из c ... * (байт **) (SectionStart + LF-> fromOffset) = SectionStart + LF-> toOffset;

1 Ответ

1 голос
/ 03 мая 2020

Как указывает jm c, вы не сможете преобразовать этот код в vb и скомпилировать его. Я думаю, что ваш единственный вариант - создать проект c# DLL, поместить этот код в него (с любым дополнительным кодом, необходимым для работы) в качестве метода, а затем скомпилировать c#

После того, как вы Сделав это, вы можете ссылаться на DLL или даже можете добавить проект C# в свое решение, продолжая элемент VB, и ссылаться на проект. Все будет скомпилировано, и даже отладчик с радостью перейдет из вашего кода VB. NET в c# и обратно; это не два отдельных языка при компиляции - вы могли бы думать о каждом языке просто как о синтактике c сахара для IL; но поскольку у VB просто нет сахара для небезопасных вещей, вам придется сделать это в C#

...