Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35
  1. #1

    [c#] Domanda da novellino sulla parola chiave "new"...

    Salve,
    la mia domanda è: quando re-istanzio un oggetto usando la parola chiave new, tutti i riferimenti al vecchio oggetto risulteranno ancora validi?
    Mi spiego meglio con un esempio:

    codice:
    classe1 oggetto1 = new classe1(valore1);
    
    classe1 riferimento1 = oggetto1;
    classe1 riferimento2 = oggetto1;
    
    oggetto1 = new classe1(valore2);
    Alla fine riferimento1 e riferimento2 punteranno all'oggetto istanziato con il valore1, quello con il valore2 o a nessuno dei due?

    Grazie a tutti, ciao

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    punteranno tutti ad oggetto 2 cioè l'ultimo creato con la new, il primo è senza riferimenti e preda del garbage collector

  3. #3
    Grazie, se è come dici tu allora posso tirare un sospiro di sollievo, perchè altrimenti avrei dovuto riguardarmi praticamente tutto il codice riga per riga per correggere un errore simile...

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    in c# gli oggetti sono tutti riferimenti (puntatori) tranne gli oggetti base e se non sbaglio le strutture

  5. #5
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da Stoicenko
    in c# gli oggetti sono tutti riferimenti (puntatori) tranne gli oggetti base e se non sbaglio le strutture
    non sbagli...
    le strutture come i tipi base vivono nello stack invece tutti gli oggetti vivono in Heap
    I got the remedy

  6. #6
    Originariamente inviato da Stoicenko
    in c# gli oggetti sono tutti riferimenti (puntatori) tranne gli oggetti base e se non sbaglio le strutture
    Però se gli oggetti sono tutti puntatori, ragionando come in c (che è il linguaggio che mi è più familiare) e riprendendo l'esempio del primo post, se io pongo i puntatori riferimento1 e riferimento2 uguali al puntatore oggetto1, e poi cambio il valore di oggetto1, questo punterà ad una nuova area di memoria, mentre riferimento1 e riferimento2 punteranno ancora alla "vecchia" posizione.

  7. #7
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da MonsterMash
    Però se gli oggetti sono tutti puntatori, ragionando come in c (che è il linguaggio che mi è più familiare) e riprendendo l'esempio del primo post, se io pongo i puntatori riferimento1 e riferimento2 uguali al puntatore oggetto1, e poi cambio il valore di oggetto1, questo punterà ad una nuova area di memoria, mentre riferimento1 e riferimento2 punteranno ancora alla "vecchia" posizione.
    giusto...
    cmq, io non direi raggionando come in c ma "Raggionando come in C++"
    I got the remedy

  8. #8
    Originariamente inviato da albgen
    giusto...
    cmq, io non direi raggionando come in c ma "Raggionando come in C++"
    Dettagli...

    il punto fondamentale è: allora la risposta di stoicenko alla mia domanda è sbagliata?

  9. #9
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da MonsterMash
    Dettagli...

    il punto fondamentale è: allora la risposta di stoicenko alla mia domanda è sbagliata?
    si è sbagliata..
    I got the remedy

  10. #10
    Argh! E alllora anche io ho sbagliato una marea di cose...

    grazie, ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.