Зависит от того, как функция использует указатель. На самом деле ты не даешь достаточно информации, чтобы дать четкий ответ, но я все равно попробую.
Обычный код C #
Если код в методе отменяет ссылку на указатель и присваивает значение без какой-либо арифметики указателя, то просто сделайте параметр параметром out
.
Если предыдущий абзац имеет значение true и у вас еще нет возвращаемого значения, просто измените сигнатуру метода, чтобы он возвращал double
.
Если код не выполняет арифметику указателей, но использует значение, которое уже существует в указанном месте, а также присваивает его, то сделайте параметр ref
параметром.
Если код не использует арифметику указателей, использует значение, но не присваивает его, то вам, вероятно, следует заменить его указателем на обычный double
, а не делать его ref
или out
.
Если реализация функции выполняет арифметику указателей, то вам нужно будет создать и передать какую-то индексируемую коллекцию, например, такую, которая реализует IList
или массив.
Альтернативы нормальному коду C #
Вы всегда можете также отметить свой код unsafe
и использовать указатели. Это, вероятно, будет гораздо больше работы, чем простые логические переводы, но с большей вероятностью будет поддерживать аналогичный профиль производительности.
Вы также можете использовать C ++ / CLI вместо C #. Он также является языком .Net и может быть проще (в зависимости от вашего приложения) напрямую интегрироваться с существующим кодом C ++.