Laden...

Wie beim Start des programms eine Liste erstellen, auf die ich immer zugreifen kann?

Erstellt von Alessandro211 vor 3 Jahren Letzter Beitrag vor 3 Jahren 657 Views
A
Alessandro211 Themenstarter:in
7 Beiträge seit 2020
vor 3 Jahren
Wie beim Start des programms eine Liste erstellen, auf die ich immer zugreifen kann?

Hallo zusammen,
Ich habe bei meinem Programm eine Liste von Objekten, da auf diese Liste immer zugegriffen wird, bräuchte ich Hilfe, wie das gehen soll. Zur Zeit habe ich gedacht, dass ich einfach eine neue Klasse MitarbeiterListe mache, über welche ich die Liste aufrufen kann, allerdings bekomme ich einen NullPointer, wenn ich darauf zugreife.
Hier ist mal der Code. Also ich bräuchte eine Liste, welche am Anfang des Programms erstellt wird und dauerhaft die gleichen Objekte beinhaltet. Das Speichern und Lesen beim schliessen und öffnen habe ich bereits gemacht. Allerdings kann ich dies nicht testen, da wie oben beschrieben ich NullPointer bekomme.


using System;
using System.Collections.Generic;
using System.Text;

namespace TicketSystem
{
    public class MitarbeiterListe
    {


        public List<Mitarbeiter> Mliste { get; set; }

        public MitarbeiterListe()
        {

        }
        public void AddMl(Mitarbeiter m)
        {
            Mliste.Add(m);
        }

        public void DelMl(Mitarbeiter m)
        {
            Mliste.Remove(m);
        }



    }
}

T
2.219 Beiträge seit 2008
vor 3 Jahren

Das Problem ist, dass du zwar die Eigenschaft Mliste in deiner Klasse anbietest, diese ist aber per Definition (Default Wert) null.
Entsprechend musst du diese initalisieren.

Entwede im Konstruktor oder diekt bei der Deklaration, was i.d.R. sauberer ist.


public List<Mitarbeiter> Mliste { get; set; } = new List<Mitarbeiter>();

Schau dir dazu mal das Thema Referenz und Wetetypen an.
Dann wird das ggf. etwas klarer für dich.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

A
Alessandro211 Themenstarter:in
7 Beiträge seit 2020
vor 3 Jahren

Ok, habe ich gemacht, allerdings wenn ich jetzt die Liste durchsuche, finde ich immernoch keine Elemente? Bei meiner Eingabe lasse ich dieses hinzufügen. Liegt es daran, dass ich mehrmals MitarbeiterListe mitarbeiterListe = new MitarbeiterListe(); habe oder kann man das so machen. Beim debuggen habe ich mir extra eine Markierung bei int k = ml.Mliste.Count() gesetzt und da steht die Länge 0. Allerdings ist doch bereits ein Objekt in die Liste hinzugefügt worden? Würde mich nochmal über Hilfe freuen, bei Bedarf kann ich gerne noch mehr Quellcode posten.


                        Mitarbeiter m = new Mitarbeiter(u, vorname, nachname, d);
                        m.Passwort = pw;
                        MitarbeiterListe mitarbeiterListe = new MitarbeiterListe();
                        mitarbeiterListe.AddMl(m);


        public Boolean Pw(int mitarbeiterNr, String passwortE)
        {

            MitarbeiterListe ml = new MitarbeiterListe();
            int k = ml.Mliste.Count();
            for(int i = 0; i < ml.Mliste.Count(); i++)
            {
                if(ml.Mliste[i].MitarbeiterNr == mitarbeiterNr)
                {
                    return ml.Mliste[i].Passwort == passwortE;
                }
            }
            return false;
        }


T
2.219 Beiträge seit 2008
vor 3 Jahren

Du erzeugst bei jedem Methoden Aufruf ein neues Objekt, weshalb dann auch die Einträge nicht vorhanden sind.
Lies dich am besten in die Grundlagen ein, sonst führen wir diesen Thread bis in alle Ewigkeiten mit Grundlagen fort!

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

A
Alessandro211 Themenstarter:in
7 Beiträge seit 2020
vor 3 Jahren

Ja und meine Frage ist einfach wodran das liegt und wie man das beheben kann. Hättest du wenigstens ein Stichwort oder einen Artikel, welchen ich lesen kann? Wäre sehr nett.

H
48 Beiträge seit 2020
vor 3 Jahren
1
124 Beiträge seit 2012
vor 3 Jahren

Hallo,

bei deiner Methode Pw erzeugst du in der ersten Zeile eine neue leere Liste. Diese Leere Liste kann nichts enthalten.

Du musst also die Liste mit dem Hinzugefügten Mitarbeiter übergeben oder diese in deiner Klasse als Variable initialisieren und dann mit Hinzufügen und Suchen auf diese EINE Liste zugreifen.

Gruß

5.657 Beiträge seit 2006
vor 3 Jahren

Hättest du wenigstens ein Stichwort oder einen Artikel, welchen ich lesen kann? Wäre sehr nett.

Du mußt wirklich erst einmal von vorne anfangen. Wenn du nicht den Unterschied zwischen Deklaration und Zuweisung von Variablen kennst, dann mußt du dich mit objektorientierter Programmierung beschäftigen. Das sind Konzepte, die in fast allen Sprachen gleich sind.

Hier gibt es ein paar Links für den Einstieg: [FAQ] Wie finde ich den Einstieg in C#?

Weeks of programming can save you hours of planning