使用构造函数C#将项添加到列表

时间:2015-02-10 06:08:23

标签: c# list

我正在学习C#并尝试使用不同的方式添加到列表中。我尝试了两种不同的方法。第一个不起作用,第二个一个起作用

第一种方法有什么问题?

 class Program
    {
        static void Main(string[] args)
        {
            Employee emps = new Employee();
            emps.PromoteEmp(emps.emp);
        }
    }

    class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Salary { get; set; }
        public int Experience { get; set; }
        public List<Employee> emp;

        public Employee()
        {
            emp = new List<Employee>();
            emp.Add(new Employee() { ID = 1, Name = "A", Experience = 6, Salary = 30000 });
            emp.Add(new Employee() { ID = 2, Name = "B", Experience = 4, Salary = 10000 });
            emp.Add(new Employee() { ID = 1, Name = "C", Experience = 5, Salary = 15000 });
            emp.Add(new Employee() { ID = 1, Name = "D", Experience = 8, Salary = 60000 });
        }

        public void PromoteEmp(List<Employee> empList)
        {
            foreach (Employee item in empList)
            {
                if (item.Experience > 5)
                {
                    Console.WriteLine(item.Name + " promoted ");
                }
            }
        }
    }

第二种方法

 class Program
    {
        static void Main(string[] args)
        {
            Employee emps = new Employee();
            emps.AddToList();
            emps.PromoteEmp(emps.emp);
        }
    }

    class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Salary { get; set; }
        public int Experience { get; set; }
        public List<Employee> emp;


        public void AddToList()
        {
          emp = new List<Employee>();
          emp.Add(new Employee() { ID = 1, Name = "A", Experience = 6, Salary = 30000 });
          emp.Add(new Employee() { ID = 2, Name = "B", Experience = 4, Salary = 10000 });
         emp.Add(new Employee() { ID = 1, Name = "C", Experience = 5, Salary = 15000 });
         emp.Add(new Employee() { ID = 1, Name = "D", Experience = 8, Salary = 60000 });
        }

        public void PromoteEmp(List<Employee> empList)
        {
            foreach (Employee item in empList)
            {
                if (item.Experience > 5)
                {
                    Console.WriteLine(item.Name + " promoted ");
                }
            }
        }
    }

谢谢你:)

3 个答案:

答案 0 :(得分:1)

这很简单,在第一种情况下,您构建Employee构建更多Employee s等等。

事实上,如果你打算粘贴你得到的例外,很明显:StackOverflowException

答案 1 :(得分:0)

当您添加相同的类Employee时,您的第一个代码会导致无限循环 在构造函数中。

答案 2 :(得分:0)

实际上,程序在构造函数中进入无限循环并且永远不会完成。

在Main()中:

来自这一行:Employee emps = new Employee();

程序转到构造函数来初始化对象。

现在在构造函数中:

emp.Add(新员工(){ID = 1,姓名=“A”,经验= 6,薪水= 30000});

在此行,您要添加新的Employee对象列表。这里再次对象初始化,因此程序在构造函数中进入无限循环。

您的计划永远不会到达最后一行。