我正在学习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 ");
}
}
}
}
谢谢你:)
答案 0 :(得分:1)
这很简单,在第一种情况下,您构建Employee
构建更多Employee
s等等。
事实上,如果你打算粘贴你得到的例外,很明显:StackOverflowException
。
答案 1 :(得分:0)
当您添加相同的类Employee时,您的第一个代码会导致无限循环 在构造函数中。
答案 2 :(得分:0)
实际上,程序在构造函数中进入无限循环并且永远不会完成。
在Main()中:
来自这一行:Employee emps = new Employee();
程序转到构造函数来初始化对象。
现在在构造函数中:
emp.Add(新员工(){ID = 1,姓名=“A”,经验= 6,薪水= 30000});
在此行,您要添加新的Employee对象列表。这里再次对象初始化,因此程序在构造函数中进入无限循环。
您的计划永远不会到达最后一行。