2010-11-03 6 views
5

J'ai une déclaration et dans la déclaration, je veux définir une hauteur est un pointeur vers un double mais obtenir le mesasage d'erreur:C#: pointeur sur un double

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

quelqu'un peut me montrer la bonne façon de déclarer le type de pointeur dans un double? Ci-dessous est la déclaration de la mine et je fixe la hauteur à un pointeur de (double* height) double mais reçoit un message d'erreur.

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

Répondre

6

Votre déclaration extern devrait probablement:

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

Hope this helps!

Modifier

Cette question (et réponse acceptée) pourrait faire la lumière sur le sujet. Il parle de ref vs out (je ne sais pas qui irait mieux dans votre situation) et de Marshalling.

3

Je pense que vous devriez:

  1. En savoir plus sur l'utilisation des pointeurs et quels blocs dangereux sont en C#, voici une bonne resource
  2. Marquez votre fonction comme « dangereux », voir ci-dessous:

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

Une fois que tout ce qui est fait, vous pouvez compiler avec le commutateur/dangereux.