3 Stimmen

C# ArrayList - Objekt

Ich habe drei Klassen in meinem C#-Programm. Erhalten Sie den folgenden Fehler:

Kann t nicht implizit konvertieren Register_Employee.Employee' konvertiert werden. Es gibt eine explizite Konvertierung (fehlt Ihnen fehlt ein Cast?) C:\Users\x64\Documents\Visual S 2010 \Projects\Register Mitarbeiter \Register Mitarbeiter \EmployeeList.cs 20 20 Register Mitarbeiter

Ich weiß, was das Problem ist. Sie müssen den richtigen Objekttyp zurückgeben, aber ich weiß nicht, wie ich das Problem lösen kann. Ich habe eine Klasse Employee, eine Klasse EmployeeList, die Mitarbeiter enthält, und das Hauptprogramm.

namespace Register_Employee
{
    class EmployeeList
    {
        ArrayList list = new ArrayList();

       public void addEmployee(Employee a)
       {
           this.list.Add(a);
       }

        public Employee GetEmployee(int Index)
        {
            var e = list[Index]; <<<<<The problems
            return e;  <<<<<The problems
        }

    }
}

namespace Register_Employee
{
    class Employee
    {

        public Employee(String iD, String firstName, String lastName)
        {
            this.ID = iD;
            this.FirstName = firstName;
            this.LastName = lastName;
        }

        public String ID { get; set; }
        public String FirstName { get; set; }
        public String LastName { get; set; }

    }
}

Vielen Dank im Voraus

1voto

Guillaume Slashy Punkte 3484

Geben Sie das Objekt einfach als Employee Dies ändern

var e = list[Index]; <<<<<The problems

Zu diesem

var e = (Employee)list[Index]; <<<<<The problems

wie ein paar Jungs gesagt haben, sollten Sie definitiv NICHT eine generische Sammlung/Liste/IEnumerable verwenden

1voto

phoog Punkte 40628

Die anderen Antworten suggerieren oder implizieren, dass Sie Folgendes verwenden sollten

List<Employee>

anstelle von ArrayList in Ihrer EmployeeList-Klasse. Aus Ihrem Beispiel scheint es, dass EmployeeList nur eine stark typisierte Hülle um ArrayList ist. Wenn das der Fall ist, können Sie EmployeeList ganz loswerden und verwenden

List<Employee>

stattdessen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X