2010-04-30 47 views
6

Tôi tạo ra một lớp học với 3 lĩnh vực:Danh sách ghi đè lên dữ liệu trên tất cả các vị trí

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; } 
     } 
    } 

Sau đó, tôi tuyên bố một danh sách từ đó lớp và một đối tượng từ lớp đó để tôi có thể có thể để thêm vào danh sách.

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

     Gente professor = new Gente(); 

Lần đầu tiên tôi làm Alunos.Add (giáo sư); vào danh sách, nó sẽ gửi thông tin đến vị trí 0 một cách chính xác.

Nhưng khi tôi làm điều đó lần thứ hai nó sẽ ghi đè tất cả mọi thứ vào vị trí 0 với các dữ liệu mới bên cạnh việc bổ sung thêm dữ liệu mới vào một vị trí mới, 1.

Trả lời

13

gì mã của bạn để thêm hai đối tượng vào danh sách xem xét như? Tôi đoán là:

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

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

Điều gì là không chính xác. Khi bạn thêm các loại tham chiếu vào danh sách, bạn chỉ thêm một tham chiếu đến đối tượng gốc. Trong trường hợp này, bạn thêm hai tham chiếu vào cùng một đối tượng hai lần.

Do đó, khi bạn sửa đổi đối tượng thứ hai ... bạn cũng đang sửa đổi mục đầu tiên.

Một đơn giản sửa chữa một lót sẽ được tái khởi professor trước khi sử dụng thứ hai:

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

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

Bạn nên thêm rằng chèn 'giáo sư = Gente mới(); 'trên dòng 4 sửa chữa vấn đề. – Jens

+0

OK Cảm ơn bạn đời. Nó đã làm việc. =) – elvispt

+0

Cảm ơn người đàn ông bạn đã cứu có thể ngày !!!!! – Sam

Các vấn đề liên quan