C #: указатель на двойной - PullRequest
       10

C #: указатель на двойной

5 голосов
/ 03 ноября 2010

У меня есть объявление, и в объявлении я хочу установить высоту - это указатель на double, но получить сообщение об ошибке:

Ошибка 1 Указатели и буферы фиксированного размера могут использоваться только в небезопасных контекст,

Может кто-нибудь показать мне правильный способ объявить тип указателя в двойном?

Ниже мое объявление, и я установил высоту равной двойному (double* height), но получил сообщение об ошибке.

private static extern bool GetElevation(double dLat, double dLon, double* height);

Ответы [ 2 ]

6 голосов
/ 03 ноября 2010

Ваша внешняя декларация, вероятно, должна быть:

private static extern bool GetElevation(double dLat, double dLon, ref double height);

Надеюсь, это поможет!

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

Этот вопрос (и принятый ответ) может пролить свет на эту тему. В нем говорится о ref против out (не уверен, что подойдет лучше в вашей ситуации) и Marshalling.

3 голосов
/ 03 ноября 2010

Я думаю, вы должны:

  1. Узнайте больше об использовании указателей и о том, что небезопасные блоки в C #, вот хороший ресурс
  2. Отметьте свою функциюкак «небезопасный», см. ниже:

private static unsafe extern bool GetElevation(double dLat, double dLon, double* height)

Как только все это будет сделано, вы можете скомпилировать с ключом / unsafe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...