Zeiger in C #, um ein int-Array zu erstellen?

7

Das folgende C ++ - Programm kompiliert und läuft wie erwartet:

%Vor%

Das einfachste C # Beispiel, das ich für diese Frage erstellen könnte, ist:

%Vor%

Wie mache ich den Zeiger?

    
y2k 30.03.2010, 16:03
quelle

3 Antworten

27

C # ist nicht C ++ - erwarten Sie nicht, dass die gleichen Dinge in C # funktionieren, die in C ++ funktionierten. Es ist eine andere Sprache, mit etwas Inspiration in der Syntax.

In C ++ ist der Arrayzugriff eine kurze Hand für die Zeigerbearbeitung. Deshalb sind die folgenden gleich:

%Vor%

Dies ist jedoch in C # nicht richtig. 5[test] ist nicht gültig C #, da es keine Indexereigenschaft für System.Int32 gibt.

In C # wollen Sie sehr selten mit Zeigern umgehen. Sie sind besser dran, wenn Sie es direkt als int-Array behandeln:

%Vor%

Wenn Sie aus irgendeinem Grund wirklich mit der Zeigermathematik arbeiten wollen, müssen Sie Ihre Methode unsicher markieren , und legen Sie es in einen festen Kontext . Dies wäre in C # nicht typisch und ist wahrscheinlich etwas völlig unnötig.

Wenn Sie das wirklich zum Laufen bringen wollen, wäre das nächste, was Sie in C # tun können:

%Vor%

(Auch das ist wirklich komisch C # - nicht etwas, das ich empfehlen würde ...)

    
Reed Copsey 30.03.2010, 16:05
quelle
5

Sie müssen das Array mit dem Schlüsselwort fixed anheften, damit es nicht vom GC verschoben wird:

%Vor%

Allerdings ist unsicherer Code in C # eher die Ausnahme als die Regel. Ich würde versuchen, Ihren C-Code in nicht-unsicheren C # -Code zu übersetzen.

    
dtb 30.03.2010 16:05
quelle
0

Sie müssen die Sprache C # lernen. Obwohl es syntaktische Ähnlichkeiten zu C / C ++ gibt, hat es - wie Java - einen ganz anderen Ansatz.

In C # verhalten sich Objekte standardmäßig als Referenzen. Das heißt, Sie müssen die Zeigerreferenzierung (& amp; amp;) und die Dereferenzierung (*) -Syntax nicht angeben.

    
Buggieboy 30.03.2010 16:17
quelle

Tags und Links