Что такое int* и long* для объективного эквивалента C в C#?

Я пытаюсь портировать библиотеку нативной iOS в Xamarin iOS, создав библиотеку привязки. Я следовал этому уроку. Но я застрял в момент построения решения.

Я заменил void* с IntPtr потому что цель-эквивалент эквивалентна void* является IntPtr в C#.

Любая помощь будет оценена. Заранее спасибо.

Редактировать:

int32_t* а также int64_t* цель-C в C#, чтобы быть более точным.

1 ответ

Ответ зависит от цели указателей: передать переменные в метод / функцию, чтобы вызываемый объект мог изменить значение; или для общей арифметики указателей.

В первом случае, если используется для возврата нескольких значений из out параметр обязателен Если использование более общее, и параметр используется для чтения и записи переданной переменной, тогда используйте ref параметр.

Во втором случае вы должны сначала рассмотреть возможность перестройки ваших алгоритмов, чтобы не использовать указатели, что больше соответствует модели C#. Если вам действительно нужно выполнить общие манипуляции с указателями, то вам нужно использовать unsafe код, а затем доступны те же типы указателей, которые вам нужны.

Другие вопросы по тегам