2010-11-03 11 views
5

Ich habe eine Erklärung und in der Erklärung, ich möchte eine Höhe setzen, ist ein Zeiger auf ein Doppelzimmer, aber den Fehler mesasage erhalten:C#: Zeiger auf das Doppelte

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

kann mir jemand zeigen die richtige Weise, um den Typ des Zeigers in einem Doppel zu deklarieren?

Unten ist meine Deklaration und ich setze die Höhe auf einen Zeiger von Doppel (double* height), aber erhält eine Fehlermeldung.

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

Antwort

6

Ihre extern-Deklaration sollte wohl sein:

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

hoffe, das hilft!

bearbeiten

Diese question (und akzeptierte Antwort) könnte etwas Licht auf das Thema werfen. Es spricht über ref vs out (nicht sicher, welche besser in Ihrer Situation passen würde) und Marshalling.

3

Ich denke, Sie sollten:

  1. Erfahren Sie mehr über Zeiger und was unsichere Blöcke sind in C#, hier ist eine gute resource
  2. Mark Ihre Funktion als "unsicher", siehe unten:

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

Sobald alles, was getan wird, dann können Sie mit dem/unsicheren Schalter kompilieren.