2010-04-30 20 views
6

ho creato una classe con 3 campi:Lista sovrascrivere i dati su tutte le posizioni

class Gente 
    { 
     int _ID; 
     string _nome, _sexo; 


     public Gente() 
     { 
      _ID = 0; 
      _nome = ""; 
      _sexo = ""; 
     } 

     public int ID 
     { 
      set { _ID = value; } 
      get { return _ID; } 
     } 

     public string Nome 
     { 
      set { _nome = value; } 
      get { return _nome; } 
     } 

     public string Sexo 
     { 
      set { _sexo = value; } 
      get { return _sexo; } 
     } 
    } 

Poi ho dichiarato un elenco da quella classe e un oggetto da questa classe in modo che io possa essere in grado di aggiungere alla lista.

List<Gente> Alunos = new List<Gente>();   

     Gente professor = new Gente(); 

La prima volta che eseguo Alunos.Add (professore); alla lista invia correttamente le informazioni alla posizione 0.

Ma quando lo faccio seconda volta che sovrascrive tutto sulla posizione 0 con i nuovi dati oltre ad aggiungere i nuovi dati in una nuova posizione, 1.

risposta

13

cosa fa il tuo codice per aggiungere i due oggetti al look lista piace? La mia ipotesi è:

Gente professor = new Gente(); 
professor.Nome = "Fu"; 
Alunos.Add(professor); 

professor.Nome = "Bar"; 
Alunos.Add(professor); 

Che non è corretto. Quando aggiungi tipi di riferimento a un elenco, stai solo aggiungendo un riferimento all'oggetto originale. In questo caso stai aggiungendo due riferimenti allo stesso oggetto due volte.

Pertanto, quando si modifica il secondo oggetto ... si modifica anche il primo.

una semplice correzione one-liner potrebbe essere quella di re-inizializzazione professor prima della seconda dell'uso:

Gente professor = new Gente(); 
professor.Nome = "Fu"; 
Alunos.Add(professor); 

professor = new Gente(); 
professor.Nome = "Bar"; 
Alunos.Add(professor); 
+3

Si dovrebbe aggiungere che l'inserimento 'professore = new Gente();' on line 4 risolve il problema. – Jens

+0

OK Grazie amico. Ha funzionato. =) – elvispt

+0

Grazie amico che hai salvato il giorno !!!!! – Sam

Problemi correlati