Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93

    [c#]il metodo clone come clona un array??

    ragazzi ho un serio problema.mi è crollato un fondamento del c#, a quanto pare non ho ben chiaro il funzionamento del metodo clone.se ho due array di tipo player, clonandone uno, com'è possibile che i cambiamenti si ripercuotano sul primo??
    ecco lo spezzone di codice
    codice:
    Player[] gioc...; (lo inizializzo altrove)
    ...
    Player[] man=(Player[])gioc.Clone();
    ...
    Player[] ned = (Player[])man.Clone();
    ...
    System.Diagnostics.Debug.WriteLine("man[iv].myrais vale: " + man[iv].myrais.ToString());
    ned[iv].myrais += 500;
    System.Diagnostics.Debug.WriteLine("ned[iv].myrais vale:  " + ned[iv].myrais.ToString());
    man[iv].myrais += 500;
    System.Diagnostics.Debug.WriteLine("man[iv].myrais vale: " + man[iv].myrais.ToString());
    considerato che myrais è un intero che all'inizio vale 0, perchè ho questo output??
    man[iv].myrais vale: 0
    ned[iv].myrais vale: 500
    man[iv].myrais vale: 1000
    è chiaro che myrais di man[iv] subisce anche l'incremento fatto su myrais di ned[i].credevo che il metodo clone restituisse una copia "indipendente" dell'oggetto clonato ma evidentemente mi sfugge qualcosa... :master:
    grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    93
    ok mi son guardato bene il discorso della copia deep e shallow.ho anche capito che clone in soldoni clona soli gli oggetti salvati per valore.i riferimenti vengono condivisi col nuovo oggetto clonato.
    nel mio caso ho 2 array diversi che condividono tot oggetti player.
    adesso provo a clonarli uno per uno e ad inserirli nel nuovo array...

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.