2012-03-11 100 views
1

如果我有兩個類,像這樣:如何將信息添加到班級的列表中?

public class Department 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<Employee> employees { get; set; } 
} 

public class Employee 
{ 
    public string Name { get; set; } 
    public string Job { get; set; } 
    public string Date { get; set; } 
} 

然後,如果我這樣做:

var departments = new List<Department>(); 
Department d = new Department 
{ 
    Id = 1, 
    Name = "Depart1", 
}; 

Department d2 = new Department 
{ 
    Id = 2, 
    Name = "Depart2", 
}; 

departments.Add(d); 
departments.Add(d2); 

我如何才能增加員工名單系類foreach循環?當我這樣做:

foreach(Department dmt in departments) 
{ 
    Employee worker = new Employee 
    { 
     Name = "Steve", 
     Job = "Cleanup", 
     Date = "Today", 
    }; 

    dmt.employees.Add(worker); 
} 

我沒有得到任何生成錯誤,但沒有添加任何東西。有什麼建議麼?

+2

當是'.employees'列表爲任何部門集到一個非空值? – 2012-03-11 19:26:29

+1

我很驚訝你沒有得到employees.Add()的空引用異常。 – 2012-03-11 19:29:10

回答

2

您沒有實例化employees屬性。您的類定義改成這樣:

public class Department 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<Employee> employees { get; set; } 

    public Department() 
    { 
     employees = new List<Employee>(); 
    } 
} 

或者,如果你不想使用構造函數來實例化employees財產,你只需要確保你這樣做,你嘗試添加一個Employee對象之前到List<Employee>

0

您需要初始化您的Department類中的公共財產僱員
在此場景中,您可以在Department實例的構造函數中執行此操作。

public class Department 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<Employee> employees { get; set; } 
    public Department() 
    { 
     employees = new List<Employee>(); 
    } 
} 
0

嘗試這樣

public class Department 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<Employee> employees { get; set; } 
    public Department() 
    { 
     employees = new List<Employee>(); 
    } 
} 

foreach(Department dmt in departments) 
{ 
    dmt.employees.Add(new Employee() { 

     // InterestedID = ((int)dataReader["JobId"]), 
     Name = "Steve", 
     Job = "Cleanup", 
     Date = "Today", 
    }); 
} 
0

我會設計我的課像這樣,使員工列表只讀:

public class Department 
{ 
    private readonly List<Employee> _employees = new List<Employee>(); 

    public int Id { get; set; }  
    public string Name { get; set; }  
    public List<Employee> employees { get { return this._employees; }}  
}