Problem mit ner Class

07/25/2016 19:29 Ludder231#1
Hi,

ich steh auf dem Schlauch weil ich ne NullReferencException habe.
Ich habe in meinem Hauptprogramm ne Class initialisiert.

PHP Code:
Aufgaben Aufgaben = new Aufgaben(); 
Meine Class sieht so aus:

PHP Code:
namespace Zubbel_Bot
{
    public class 
Aufgaben
    
{

        public List<
ParameterFütternFüttern getset; }
        
        public List<
ParameterTränkenTränken getset; }
                
    }
    
    public class 
ParameterFüttern
    
{

        public 
bool FütternHeu getset; }
        public 
bool FütternHafer getset; }                
        public 
bool Säugen getset; }
        public 
string MengeHeu getset; }
        public 
string MengeHafer getset; }

    }

    public class 
ParameterTränken
    
{
         public 
bool Tränken getset; }

    }





Der Aufruf sieht so aus:

PHP Code:
Aufgaben.Füttern[0].FütternHeu true
wo habe ich den denkfehler?

mfg Ludder231
07/25/2016 19:33 Jeoni#2
Hast du die Liste "Füttern" irgendwo initialisiert? Also sowas wie
Code:
Füttern = New List<ParameterFüttern>();
?
Wenn obiges alles an Code ist, ist das bestimmt fehlerhaft. Zudem ist selbst dann noch kein Element in der Liste (Hinzufügen ging in afaik mit .Add), was du über Indizierung ansprechen könntest.
Mit freundlichen Grüßen
Jeoni
07/25/2016 19:38 Ludder231#3
Nein hab ich nicht initialisiert. Ich kann es aber auch so nicht wie du sagst initialisieren. Der schlägt mir anstatt 'Füttern' immer ParameterFüttern vor.

Ich hab ein früheres Projekt von mir dort ist es genau so aufgebaut. Aber da wird das mit nem Json deseralizer verwendet. Ich fand so sehr übersichtlich und wollte das hier auch benutzen.
07/25/2016 20:05 YatoDev#4
das was Jeoni geschrieben hat stimmt und es scheint auch die richtige antwort zu sein zumindets kann man auf nichts anderes schließen da wir keinen code haben.

Ich möchte zusätzlich noch optionales bemängeln:

Auf deutsch programmieren. da muss nichts mehr zu gesagt werden das macht man einfach nicht.

public bool FütternHeu { get; set; }
public bool FütternHafer { get; set; }
public bool Säugen { get; set; }

in ein enum verwandeln oder so sachen wie NeedHay schreiben da es ein bool ist.
(Siehe .Net Naming conventions)

objekte sollten immutable sein. du solltest auf jedenfall konstruktoren hinzufügen

und zu "Aufgaben" fällt mir noch ein das man das eventuell mit einem Stack oder eine Queue
07/26/2016 18:13 Ludder231#5
Tut mir leid, das funktioniert so nicht. Ich kann auf die Sachen nicht zugreifen.
07/26/2016 18:40 Ludder231#6
Der Code ist komplett so wie ich ihn benutze. Nur kann ich nirgends die Listen initialisieren.
07/26/2016 18:54 Jeoni#7
Was genau klappt denn bei dir nicht? Denn ich habe da keine Probleme.
Code: [Only registered and activated users can see links. Click Here To Register...] (zugegeben, hab's jetzt auch ausschließlich mit Ideone getestet, aber sollte auch generell funktionieren)
Mit freundlichen Grüßen
Jeoni
07/26/2016 19:03 Ludder231#8
Quote:
Originally Posted by Jeoni View Post
Was genau klappt denn bei dir nicht? Denn ich habe da keine Probleme.
Code: [Only registered and activated users can see links. Click Here To Register...] (zugegeben, hab's jetzt auch ausschließlich mit Ideone getestet, aber sollte auch generell funktionieren)
Mit freundlichen Grüßen
Jeoni
Komischerweise funktionierts mit deinem Code. Ich hab den Teil mit Public Aufgaben() genau an der selben stelle eingesetzt. Bei mir hat er immer direkt auf ParameterFüttern verwiesen. Sehr kurios. Dachte schon ich bin bescheuert.

Aber der Teil mit "aufgaben.Füttern.Add(new ParameterFüttern());" hat mir noch gefehlt.

Naja vielen Dank!

Kann geclosed werden.
07/27/2016 07:59 IceTrailer#9
Quote:
Originally Posted by Ludder231 View Post
PHP Code:
Aufgaben.Füttern[0].FütternHeu true

Du kannst auch nicht einfach auf irgendeinen Index zugreifen, wenn noch nichts drin ist.