List 在C中用类显示列表中的数据#

List 在C中用类显示列表中的数据#,list,List,我正在尝试显示具有用户定义类型数据的列表中的数据 这是我的班级 namespace test { class Employee { private string employeeName; private string employeeId; public override string ToString() { return "Employee Name: " + EmployeeName + "\nEmployee ID: " + Emplo

我正在尝试显示具有用户定义类型数据的列表中的数据

这是我的班级

namespace test
{
class Employee
{
    private string employeeName;
    private string employeeId;

    public override string ToString()
    {
        return "Employee Name: " + EmployeeName + "\nEmployee ID: " + EmployeeId;
    }

    public string EmployeeName
    {
        get { return employeeName; }
        set { employeeName = value;}
    }

    public string EmployeeId
    {
        get { return employeeId; }
        set { employeeId = value;}
    }
}
}
这是我的主要方法

namespace test
{
class Program
{
    static void Main(string[] args)
    {
        Employee employees = new Employee();
        List<Employee> listEmployee = new List<Employee>();

        employees.EmployeeName = "TEST 1";
        employees.EmployeeId = "01";

        listEmployee.Add(employees);

        employees.EmployeeName = "TEST 2";
        employees.EmployeeId = "02";

        listEmployee.Add(employees);

        Console.WriteLine("Number of Employee in the list: "+ listEmployee.Count);
        Console.WriteLine();

        foreach (Employee em in listEmployee)
        {
            Console.WriteLine(em);
            Console.WriteLine();
        }

     }
}
}
但它表明,

Number of Employee in the list: 2

Employee Name: TEST 2
Employee ID: 02

Employee Name: TEST 2
Employee ID: 02
请告诉我为什么我没有得到预期的产出,以及如何克服这一点


提前谢谢。:)

您可能对
对象
参考
有误解

将对象,即
员工
添加到列表中:

这里,列表的第一个元素保存对
对象的
引用。因此,当您对对象进行更改时,它将变为

然后再次将对象插入列表中,因此列表的第二个位置也包含对
员工的引用

在将对象添加到列表之前,应该创建一个新对象(具有新引用)-

Employee employees2 = new Employee();
employees2.EmployeeName = "TEST 2";
employees2.EmployeeId = "02";

listEmployee.Add(employees2);

您可能对
对象
参考
有误解

将对象,即
员工
添加到列表中:

这里,列表的第一个元素保存对
对象的
引用。因此,当您对对象进行更改时,它将变为

然后再次将对象插入列表中,因此列表的第二个位置也包含对
员工的引用

在将对象添加到列表之前,应该创建一个新对象(具有新引用)-

Employee employees2 = new Employee();
employees2.EmployeeName = "TEST 2";
employees2.EmployeeId = "02";

listEmployee.Add(employees2);
你修改过的主站

static void Main(string[] args)
{
    Employee employeeFirst = new Employee();
    List<Employee> listEmployee = new List<Employee>();

    employeeFirst.EmployeeName = "TEST 1";
    employeeFirst.EmployeeId = "01";

    listEmployee.Add(employeeFirst);

    Employee employeeNext = new Employee();


    employeeNext.EmployeeName = "TEST 2";
    employeeNext.EmployeeId = "02";

    listEmployee.Add(employeeNext);

    Console.WriteLine("Number of Employee in the list: "+ listEmployee.Count);
    Console.WriteLine();

    foreach (Employee em in listEmployee)
    {
        Console.WriteLine(em);
        Console.WriteLine();
    }

 }
static void Main(字符串[]args)
{
员工employeeFirst=新员工();
List listEmployee=新列表();
employeeFirst.EmployeeName=“测试1”;
employeeFirst.EmployeeId=“01”;
listEmployee.Add(employeeFirst);
Employee employeeNext=新员工();
employeeNext.EmployeeName=“测试2”;
employeeNext.EmployeeId=“02”;
listEmployee.Add(employeeNext);
Console.WriteLine(“列表中的员工人数:+listEmployee.Count”);
Console.WriteLine();
foreach(列表员工中的员工em)
{
控制台写入线(em);
Console.WriteLine();
}
}
修改后的主菜单

static void Main(string[] args)
{
    Employee employeeFirst = new Employee();
    List<Employee> listEmployee = new List<Employee>();

    employeeFirst.EmployeeName = "TEST 1";
    employeeFirst.EmployeeId = "01";

    listEmployee.Add(employeeFirst);

    Employee employeeNext = new Employee();


    employeeNext.EmployeeName = "TEST 2";
    employeeNext.EmployeeId = "02";

    listEmployee.Add(employeeNext);

    Console.WriteLine("Number of Employee in the list: "+ listEmployee.Count);
    Console.WriteLine();

    foreach (Employee em in listEmployee)
    {
        Console.WriteLine(em);
        Console.WriteLine();
    }

 }
static void Main(字符串[]args)
{
员工employeeFirst=新员工();
List listEmployee=新列表();
employeeFirst.EmployeeName=“测试1”;
employeeFirst.EmployeeId=“01”;
listEmployee.Add(employeeFirst);
Employee employeeNext=新员工();
employeeNext.EmployeeName=“测试2”;
employeeNext.EmployeeId=“02”;
listEmployee.Add(employeeNext);
Console.WriteLine(“列表中的员工人数:+listEmployee.Count”);
Console.WriteLine();
foreach(列表员工中的员工em)
{
控制台写入线(em);
Console.WriteLine();
}
}

Chen很好地回答了您的问题,但我也建议(为了以后的代码审查)将您的“employees”变量重命名为“employees”,将“ListEmployees”变量重命名为“listOfEmployees”,或者仅将“employees”重命名为“employees”,但我也建议(为了以后的代码审查)将您的“employees”变量重命名为“employees”,并“员工名单”改为“员工名单”或“员工名单”“谢谢你,陈。现在我明白了。再次感谢您花时间绘制所有这些图形,只是为了让我明白。你太棒了!!!!:-)谢谢你,陈。现在我明白了。再次感谢您花时间绘制所有这些图形,只是为了让我明白。你太棒了!!!!:-)达雷尔,非常感谢你。:)感谢,享受:-)达雷尔,非常感谢尊敬的,享受的:-)