При использовании fixed
таким образом, новая переменная - это указатель , то есть
fixed (sbyte* array4 = array)
Однако! Я не думаю, что вам нужен unsafe
код здесь, и вы, вероятно, не должны быть здесь. Просто ... используйте это как массив! Должна быть очень веская причина для использования fixed
/ unsafe
, и я просто не вижу здесь никакой причины. Если вам просто нужно значение:
var algo = array[0];
Если вам действительно нужен указатель, предпочтите управляемый указатель:
ref sbyte algo = ref array[0];
edit; из комментариев кажется, что здесь происходит некоторое P / Invoke; что является допустимым сценарием для fixed
, и в этом случае это должно работать нормально:
fixed (sbyte* ptr = array)
{
sbyte* algo = null;
if (array != null && array.Length != 0)
{
algo = ptr; // &ptr[0] **is** ptr
}
YourUnmanagedMethod(algo);
}
Важно: вы не должны использовать указатель, как только вы ' мы вышли из области fixed
; указатель на ненадежен после этой точки из-за того, как работает G C.