2016-11-16 4 views
-2

현재 개체 (학생)를 추가하려고합니다. 학생들로 구성된 객체 목록에 foreach 루프를 만들면 각 목록 객체는 동일한 위치를 참조하므로 결국 각 목록 객체의 정보는 루프가 끝날 때 생성 된 마지막 학생 객체와 동일합니다. foreach 루프를 사용하여 목록에 개체를 추가 할 때 찾을 수있는 유일한 정보는 Student stud = new Student 행을 사용하여 작업하고 있다고 생각한 개체의 새 인스턴스를 만드는 것입니다.foreach 루프를 사용하여 목록에 추가

또한 기본 생성자를 사용하고 인수 대신 속성을 사용하여 학생을 목록에 추가했지만 동일한 결과가 나타납니다.

foreach 루프를 사용하여 개체 목록에 개체를 추가하는 데 큰 도움이됩니다.

foreach 루프 :

foreach (DataRow datrow in dt.Rows) 
{ 
    Student stud = new Student(
     datrow["ID"].ToString(), 
     datrow["fName"].ToString(), 
     datrow["lName"].ToString(), 
     datrow["GPA"].ToString(), 
     datrow["Graduate"].ToString() 
    ); 
    studentList.Add(stud); 
} 

내 학생 생성자 : 각 객체를 참조하고 다시 것을 DT

   OleDbCommand cmd = new OleDbCommand(strSql, con); 
       con.Open(); 
       cmd.CommandType = CommandType.Text; 
       OleDbDataAdapter dc = new OleDbDataAdapter(cmd); 
       dc.Fill(ds, "ID"); 
       dt = ds.Tables["ID"]; 
       const char DELIM = ','; 
       foreach (DataRow datrow in dt.Rows) 

"이"정보를 채우는 데 사용

public Student(
    string studentID, 
    string fName, 
    string lName, 
    string studentGPA, 
    string graduate) 
{ 
    iD = studentID; 
    firstName = fName; 
    lastName = lName; 
    gPA = studentGPA; 
    grad = graduate; 
} 

문 모든 새 개체에 대해 작성된

결과

+0

결과가 잘못 되었나요? 내 화면은 작아서 사진의 머리 나 꼬리를 만드는 것입니다. – Jacobr365

+2

이 코드는 올바른 것처럼 보입니다. 문제가 다른 곳이 아니라 여기에 있다는 것을 어떻게 결정 했습니까? – David

+0

또한 첫 번째 스크린 샷에서 생성자의 * 첫 번째 줄에서 일시 중지되었을 때'this '에 대한 값을 이미 채울 수 있습니까? 이상하게 보입니다. – David

답변

1

귀하의 개인 변수가 가장 가능성이 정적이다. 이것은 변수가 생성자에서 이미 값을 가지고있는 이유를 설명 할 것입니다 (정상 인스턴스 변수에서는 그렇지 않습니다). 정적 값은 속성에 의해 반환됩니다 (이미 값이있는 방법을 설명합니다). 변수를 인스턴스로 변경하십시오 (static 아님)

+1

멋진 수정 구슬 : o) –

0

안녕 단지 같은 외부 클래스 변수를 선언하여 시도되는 나의 제안은, 그 작품

Student stud; 

    foreach (DataRow datrow in dt.Rows) 
    { 
      stud = new Student(
      datrow["ID"].ToString(), 
      datrow["fName"].ToString(), 
      datrow["lName"].ToString(), 
      datrow["GPA"].ToString(), 
      datrow["Graduate"].ToString() 
     ); 
     studentList.Add(stud); 
    } 

나에게 당신의 제안을 알려 주시기 바랍니다 여부를 참조하십시오.

감사 KARTHIK

관련 문제