2010-11-03 19 views
5

ho una dichiarazione e nella dichiarazione, voglio impostare un altezza è un puntatore a una doppia ma ottenere il mesasage errore:C#: Pointer raddoppiare

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

qualcuno mi può lo spettacolo modo giusto per dichiarare il tipo di puntatore in un doppio?

Di seguito è riportata la mia dichiarazione e ho impostato l'altezza su un puntatore del doppio (double* height) ma viene visualizzato un messaggio di errore.

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

risposta

6

vostra dichiarazione extern dovrebbe probabilmente essere:

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

Spero che questo aiuti!

Modifica

Questo question (e accettato risposta) potrebbe far luce su questo argomento. Si parla di ref rispetto a out (non sono sicuro quale si adatta meglio alla situazione) e Marshalling.

3

Penso che si dovrebbe:

  1. Ulteriori informazioni sull'utilizzo di puntatori e quali blocchi non sicuri sono in C#, ecco un buon resource
  2. Mark vostra funzione come "non sicuro", vedere sotto:

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

Una volta che tutto ciò che viene fatto, allora si può compilare con l'opzione/non sicuro.

Problemi correlati