Zeigerfeld
-
Guten Morgen!
Ich entschuldige mich vorab schon einmal, falls meine Frage einen gewissen Anspruch vermissen lässt. Ich bin, was .NET angeht, ein absoluter Anfänger. Wir wollen ein normalen C++ Quellcode in .Net umwandeln. Klappt soweit auch. Allerdings bin ich mir nicht sicher, wie in .NET folgendes gelöst werden kann:
Ein Zeigerfeld, das in C++ so programmiert würde:
...
double ** feld = new double *[anzahl];
feld[i] = &wert;
...Mit anderen Worten, ändere ich feld[i], ändere ich auch den entsprechenden Wert und umgekehrt. Wie wird sowas in .NET gelöst, um diese Funktionsweise zu erzielen? Vielen Dank!
euer matze
-
na ja, einfach so:
double[] array = new double[10]; foreach( double d in array ) { d = wert; }
bzw
double[] array = new double[10]; for( int=0; i<array.Length; i++ ) { array[i] = i; }
-
Dein erstes Beispiel kompiliert erst gar net weil man niemals die Iterationsvariable ändern darf, und der zweite Code ändert zwar die Werte im Array, aber nur Kopien davon. Mit dem Zeigerfeld, wird aber direkt mit der Referenz gearbeitet.
Als Lösung köntest du den gleichen Code den du in C++ geschrieben hast auch in C#(ich nehme mal damti programmierst unter .Net oder doch mit C++/CLI?) nem unsafe Block schreiben, da darfst du genauso mit Pointern rumhantieren. Oder du kappselst dir den Valuetype in nem Referenztypen dann arbeitest du normal mit nem Array und hast Referenzen , so dass du auch den eigentlichen Wert änderst und net nur ne Kopie davon wies bei Valuetypes ist.