2010-11-05 2 views
0

Я просто добавляю элементы в список, но не могу заставить его работать. Он продолжает бросать ожидаемые ошибки, ожидается).Как добавить новый список <t> в другой список в C# 2.0?

using System; 
using System.Collections.Generic; 

public class Employee 
{ 
    private int _id; 
    private string _FName; 
    private string _MName; 
    private string _LName; 
    private DateTime _DOB; 
    private char _sex; 

public int ID { get { return _id; } set { _id=value; } } 
public string FName{get{return _FName;}set{_FName=value;}} 
public string MName { get { return _MName; } set { _MName = value; } } 
public string LName { get { return _LName; } set { _LName = value; } } 
public DateTime DOB { get { return _DOB; } set { _DOB = value; } } 
public char Sex { get { return _sex; } set { _sex = value; } } 

public List<Employee> GetEmployeeList() 
{ 
    List<Employee> empList=new List<Employee>(); 
    empList.Add(new Employee() { ID = 1, FName = "John", MName = "", LName = "Shields", DOB = DateTime.Parse("12/11/1971"), Sex = 'M' }); 
    empList.Add(new Employee() { ID = 2, FName = "Mary", MName = "Matthew", LName = "Jacobs", DOB = DateTime.Parse("01/17/1961"), Sex = 'F' }); 
    empList.Add(new Employee() { ID = 3, FName = "Amber", MName = "Carl", LName = "Agar", DOB = DateTime.Parse("12/23/1971"), Sex = 'M' }); 
    empList.Add(new Employee() { ID = 4, FName = "Kathy", MName = "", LName = "Berry", DOB = DateTime.Parse("11/15/1976"), Sex = 'F' }); 
    return empList; 
} 
} 
+0

Вы нацеленный на .net2 выполнение, но то, что C# компилятор (или версия Visual Studio) вы используете? –

+0

Какая строка является ошибкой? –

+0

Hiya, я использую VSS 2005, возможно, его 2.0 –

ответ

4

Если вы используете ASP.NET 2, это возможно, используя компилятор C# 2 (в соответствии с вашим названием, на самом деле) - который не поддерживает синтаксис инициализатора объекта, который вы используете. Если возможно, попробуйте выполнить обновление, чтобы использовать компилятор C# 3, или создайте конструктор Employee, выполнив все соответствующие параметры.

Так выражение, как это:

new Employee() { ID = 1, FName = "John", MName = "", LName = "Shields", 
       DOB = DateTime.Parse("12/11/1971"), Sex = 'M' } 

станет

new Employee(1, "John", "", "Shields", "DOB", 'M') 

Обратите внимание, что если вы были с помощью компилятора C# 3, вы не должны иметь все эти ручные вызовы до Add ... вы могли бы просто написать:

var employees = new List<Employee> 
{ 
    new Employee(... stuff here...), 
    new Employee(... stuff here...) 
}; 

Вы все равно можете использовать синтаксис инициализатора объекта, если хотите, но синтаксис инициализатора коллекции упрощает любой подход к построению объектов Employee.

+0

Спасибо Jon. Вы правы обо мне, используя инициализацию объекта. Я исправил код как empList.Add (новый Employee (1, «John», «», «Shields», DateTime.Parse («12/11/1971»), «M»)); , Теперь он говорит «Нет перегрузки для метода Employee» принимает 6 аргументов в «новом». –

+0

@Popo: Ahh ... Добавьте конструктор в ваш класс Employee, который принимает 6 аргументов в том же порядке. Вот что сказал Джон в своем ответе выше. – Aamir

+0

Эй, я передаю аргументы в правильном порядке. Нужно ли инициализировать каждый объект, прежде чем добавлять его в свой список? –

1

Ваш код компилируется как раз для меня. Вы используете версию C#, которая поддерживает инициализаторы объектов (v. 3.0+)?

Вот полный пример кода с помощью конструктора:

using System; 
using System.Collections.Generic; 

public class Employee 
{ 
    private int _id; 
    private string _FName; 
    private string _MName; 
    private string _LName; 
    private DateTime _DOB; 
    private char _sex; 

    public int ID { get { return _id; } set { _id = value; } } 
    public string FName { get { return _FName; } set { _FName = value; } } 
    public string MName { get { return _MName; } set { _MName = value; } } 
    public string LName { get { return _LName; } set { _LName = value; } } 
    public DateTime DOB { get { return _DOB; } set { _DOB = value; } } 
    public char Sex { get { return _sex; } set { _sex = value; } } 

    public Employee(int id, string fname, string mname, string lname, DateTime dob, char sex) 
    { 
     ID = id; 
     FName = fname; 
     MName = mname; 
     LName = lname; 
     DOB = dob; 
     Sex = sex; 
    } 

    public List<Employee> GetEmployeeList() 
    { 
     List<Employee> empList = new List<Employee>(); 
     empList.Add(new Employee(1, "John", "", "Shields", DateTime.Parse("12/11/1971"), 'M')); 
     //etc 
     return empList; 
    } 
} 
+0

Привет, Jonas, я использую VSS 2005. –

+0

Это означает, что вы используете C# 2.0 :-) Проверьте ответ Джона о том, как использовать конструкторы вместо инициализаторов объектов. –

+0

Эй, Джонас, я столкнулся с проблемой. –