Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Passaggio di variabili per valore
Forum - C# / VB.NET - [C#] Passaggio di variabili per valore

Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 11:59
Giovedì, 02/07/2009
Questo topic è stato chiuso dal moderatore

Ciao a tutti,
sto realizzando una classe per definire speciali variabili numeriche.
Ho definito gli operatori per eseguire le operazioni aritmetiche fra oggetti di questa classe. Per eseguire i calcoli devo modificare le variabili immesse nella funzione, tuttavia voglio far si che le modifiche siano temporanee: ossia che la variabile originaria al termine della funzione mantenga il suo valore iniziale.

Codice sorgente - presumibilmente VB.NET

  1. ....
  2. MyClass var1 = var2 + var3;
  3. ....
  4.  
  5. public static MyClass operator +(MyClass a1, MyClass a2)
  6. {
  7.       a1 = a1*a2;
  8.       return a1+a2;
  9. }



Al termine di questa funzione mi deve essere restituito il valore (a1*a2)+a2, però le variabili var1 e var2 devono avere il loro valore originario.

Scritto così però non funzione, cosa devo fare?

Ultima modifica effettuata da Matthew il 02/07/2009 alle 12:02


"I have never let my schooling interfere with my education." Mark Twain
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:20
Giovedì, 02/07/2009
Codice sorgente - presumibilmente C# / VB.NET

  1. Return (a1*a2)+a2


:rotfl:

Ultima modifica effettuata da Il Totem il 02/07/2009 alle 13:20


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 15:16
Giovedì, 02/07/2009
ahhaha... Va be devo ammettere che è colpa mia... non lo avevo precisato: lo so benissimo che il problema dell'esempio si potrebbe risolvere così, ma questa è solo una esemplificazione del tema da trattare... In realtà nel mio programma la funzione è ben più complessa e il problema non può essere aggirato così...  
:rotfl:


"I have never let my schooling interfere with my education." Mark Twain
PM
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 12:55
Venerdì, 03/07/2009
Visto che gli oggetti vengono sempre chiamati per referenza ho risolto il problema scrivendo una funzione che mi facesse una deep copy dell'oggetto, poi modificavo il nuovo oggetto clone e lasciavo invariato quello chiamato come argomento.
Così funziona ma potrebbero esserci soluzioni migliori... non so...


"I have never let my schooling interfere with my education." Mark Twain
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:10
Venerdì, 03/07/2009
Beh, non potevi pretendere che questo con le informazioni che hai dato :D La deep copy, comunque, è una buona soluzione.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 13:41
Venerdì, 03/07/2009
Grazie mille lo stesso... Lo so è sempre difficile fare richieste chiare e semplici... Ci si dimentica sempre qualche dettaglio dato per scontato...
:k:


"I have never let my schooling interfere with my education." Mark Twain
PM