Что такое int* и long* для объективного эквивалента C в C#?
Я пытаюсь портировать библиотеку нативной iOS в Xamarin iOS, создав библиотеку привязки. Я следовал этому уроку. Но я застрял в момент построения решения.
Я заменил void*
с IntPtr
потому что цель-эквивалент эквивалентна void*
является IntPtr
в C#.
Любая помощь будет оценена. Заранее спасибо.
Редактировать:
int32_t*
а также int64_t*
цель-C в C#, чтобы быть более точным.
1 ответ
Ответ зависит от цели указателей: передать переменные в метод / функцию, чтобы вызываемый объект мог изменить значение; или для общей арифметики указателей.
В первом случае, если используется для возврата нескольких значений из out
параметр обязателен Если использование более общее, и параметр используется для чтения и записи переданной переменной, тогда используйте ref
параметр.
Во втором случае вы должны сначала рассмотреть возможность перестройки ваших алгоритмов, чтобы не использовать указатели, что больше соответствует модели C#. Если вам действительно нужно выполнить общие манипуляции с указателями, то вам нужно использовать unsafe
код, а затем доступны те же типы указателей, которые вам нужны.