2010-11-03 3 views
5

У меня есть заявление и в декларации, я хочу, чтобы установить высоту является указателем на двойной, но получить mesasage ошибки:C#: Указатель на двойной

" Error 1 Pointers and fixed size buffers may only be used in an unsafe context",

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

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

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

ответ

6

Ваше ехЬегп декларация должна, вероятно, будет:

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

Надеется, что это помогает!

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

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

3

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

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

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

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

Смежные вопросы