![]() |
VB.Net-Forum - Beitragsübersicht - |
|
Thema | V15: Wert an Funktion übergeben |
Von |
fcami |
Datum |
02. März 2023 um 19:17:59 |
Frage |
Hallo,
wenn ich eine Feldvariable an eine Funktion übergebe, ändert sich die übergebene Feldvariable.
Wie kann ich das unterbinden ?
Hier ein Code-Schnipsel:
Public Function ROTATE(ByVal qori As VQ.ELE(), basep As FC_POINT, a As Double) As VQ.ELE() 'qori = originale querschnittsdaten 'bp = basispunkt 'a = winkel Dim z1 As Integer For z1 = 0 To UBound(qori) qori(z1).points = FC_MATH_COORTRANS_ARRAY(qori(z1).points, basep, a) Next ROTATE = qori End Function
Wenn ich ROTATE aufrufe wird die übergebene Variable für qori geändert. |
|
Antwort: |
Von |
Nico |
E-Mail |
nico.schertler@studentpartners.de |
Datum |
02. März 2023 um 19:32:23 |
Antwort |
Hallo,
der Parameter qori in deiner Funktion ist vom Typ Array (von VQ.ELE). Arrays sind Referenztypen. Das heißt, dass die Variable selbst nur eine Referenz auf das eigentliche Array speichert. Die Daten des Arrays liegen aber an anderer Stelle. Eben dort, wohin die Referenz zeigt. Innerhalb deiner Funktion änderst du nicht die Variable (Set qori = ...), sondern den Inhalt des Arrays (qori(z1).points = ...). Dadurch sind die Änderungen auch nach außen sichtbar.
Wenn du das umgehen möchtest, muss deine ROTATE-Funktion ein neues Array anlegen, in dem die transformierten Punkte abgelegt werden.
Nico |
|
[ Antwort schreiben | Zurück zum VB.Net-Forum | Forum-Hilfe ] |
| |