簡體   English   中英

在C#中需要幫助以刪除列表中的obj

[英]Need help in C# to delete obj in a list

我有一個員工管理系統,該系統試圖在c#控制台應用程序中構建,但無法添加新員工。

但我不確定如何從列表中刪除員工。

我必須將兩種方法放在一起,然后它才能工作。

似乎我無法從我的removeEmployee方法調用obj(emp)

主班

using System;

namespace HRM
{
    class Program
    {
        static void Main(string[] args)
        {

             manageEmp emp = new manageEmp();

             emp.addEmployee();
             emp.removeEmployee();
        }
    }
}

員工階層

using System;
using System.Collections.Generic;

namespace HRM
{
    public class Employee
    {
        private String empID;
        private String empFirstName;
        private String empLastName;
        private String empDep;
        private String empDOB;
        private String empAddress;
        private int PostalCode;
        private double empSal;


        public Employee()
        {

        }

        public Employee(String aempID, string aempFirstName, string aempLasttName, string aempDep, String aEmpDOB, string aempAddress, int aPostalCode, double aempSal)
        {
            this.EmpID = aempID;
            this.EmpFirstName = aempFirstName;
            this.EmpLastName = aempLasttName;
            this.EmpDep = aempDep;
            this.EmpDOB = aEmpDOB;
            this.EmpAddress = aempAddress;
            this.PostalCode1 = aPostalCode;
            this.EmpSal = aempSal;
        }

        public string EmpID { get => empID; set => empID = value; }
        public string EmpFirstName { get => empFirstName; set => empFirstName = value; }
        public string EmpLastName { get => empLastName; set => empLastName = value; }
        public string EmpDep { get => empDep; set => empDep = value; }
        public string EmpDOB { get => empDOB; set => empDOB = value; }
        public string EmpAddress { get => empAddress; set => empAddress = value; }
        public int PostalCode1 { get => PostalCode; set => PostalCode = value; }
        public double EmpSal { get => empSal; set => empSal = value; }
        public List<Employee> El { get => el; set => el = value; }

        public override string ToString()
        {
            return "Employment ID : " + empID + "\n"
                  + "FirstName : " + EmpFirstName + "\n"
                  + "LastName : " + EmpLastName + "\n"
                  + "Department : " + EmpDep + "\n"
                  + "Date of Birth: " + EmpDOB + "\n"
                  + "Address : " + EmpAddress + "\n"
                  + "PostalCode : " + PostalCode1 + "\n"
                  + "empSal : " + EmpSal + "\n";
        }
    }
}

manageEmp類

using System;
using System.Collections.Generic;

namespace HRM
{
    public class manageEmp
    {
        private List<Employee> el = new List<Employee>();
        public List<Employee> El { get => el; set => el = value; }

        public void addEmployee()
        {

            Console.WriteLine("===================================" + "\n");
            Console.WriteLine("Add an Employee");
            Console.WriteLine("===================================" + "\n");
            Console.WriteLine("");

            Console.WriteLine("Please enter your Employment ID");
            String eID = Console.ReadLine();

            Console.WriteLine("Please enter your First Name");
            String eFirstName = Console.ReadLine();

            Console.WriteLine("Please enter your Last Name");
            String eLasttName = Console.ReadLine();

            Console.WriteLine("Please entter your department");
            String eDep = Console.ReadLine();

            Console.WriteLine("Please enter your Date of Birth");
            String eDOB = Console.ReadLine();

            Console.WriteLine("Please entter your Address");
            String eAddress = Console.ReadLine();

            Console.WriteLine("Please enter your Postal Code");
            int ePostalCode = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Please enter your Salary");
            double eSal = Convert.ToDouble(Console.ReadLine());

            Employee emp = new Employee(eID, eFirstName, eLasttName, eDep, eDOB, eAddress, ePostalCode, eSal);

            emp.El.Add(emp);

        }

        public void viewEmployee()
        {
            Employee nemp = new Employee();

            nemp.El.ForEach(Console.WriteLine);


        }

        public void removeEmployee()
        {
            Console.WriteLine("Please enter a employee Id to be deleted");


            String delemp = Console.ReadLine();
            for (int i = 0; i < El.Count; i++)
            {
                emp = El[i];
                if (delemp.Equals(eID))
                {
                    el.Remove(emp);

                }
                Console.WriteLine(delemp + " Has been deleted sucessfully");
                el.ForEach(Console.WriteLine);
            }
        }
    }
}

您的問題是您的員工列表在員工類內部-因此每個員工都有自己的員工列表-並且該列表僅包含該單個員工。

RemoveEmployee函數中,您正在創建一個新的manageEmp對象。 就像“新”一詞所暗示的,這是一個不同的,新創建的manageEmp ,具有自己的,新創建的List<Employee> ,其中不包含任何項目。

此外,您已將該函數聲明為public void removeEmployee(string eID)因此無法使用emp.removeEmployee()行來調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM