2010-11-03 21 views
5

Tengo una declaración y en la declaración, quiero establecer una altura que es un puntero a una doble, pero conseguir el mesasage error:C#: Puntero a duplicar

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

Puede alguien al mostrar forma correcta de declarar el tipo de puntero en un doble?

A continuación se muestra la declaración de la mina y establezco la altura en un puntero de doble (double* height) pero aparece un mensaje de error.

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

Respuesta

6

Su declaración externa probablemente debería ser:

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

Espero que esto ayude!

Editar

Este question (y aceptado respuesta) podría arrojar alguna luz sobre el tema. Habla de ref contra out (no estoy seguro de cuál cabría mejor en su situación) y Marshalling.

3

creo que deberías:

  1. Más información sobre el uso de punteros y qué bloques inseguros son en C#, aquí hay una buena resource
  2. Marque su función como "no seguro", ver más abajo:

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

Una vez que todo lo que se hace a continuación, se puede compilar con el modificador/inseguro.