Entwickler-Ecke
Basistechnologien - NullReferenceException? wtf?
huuuuuh - Fr 24.12.10 13:49
Titel: NullReferenceException? wtf?
ich programmiere grade ein kleines tool, welches automatisch alle paar sekunden bilder konvertiert. eigentlich keine große sache, nur schmeißt mir C# jetzt NullReferenceExceptions hin, welche da meiner meinung nach nich auftreten dürften
und zwar in diesen 3 zeilen: (in allen dreien)
C#-Quelltext
1: 2: 3:
| chg_img_size=false; del_orig=false; converted=new List<string>(); |
die variablen, denen etwas zugewiesen werden soll, sind NULL. das ist klar, aber mir erschließt sich nicht, warum C# diesen variablen keinen wert zuweisen will... hab auch versucht, die bool-variablen mit new- zu initialisieren, aber auch das funktionierte nicht.
einer ne idee?
ps. diese 3 zeilen stehen im Konstruktor einer Klasse, welche für Einstellungen zuständig ist
Yogu - Fr 24.12.10 13:53
huuuuuh hat folgendes geschrieben : |
die variablen, denen etwas zugewiesen werden soll, sind NULL. |
Wieso können
chg_img_size und
del_orig null sein? Hast du die als
object deklariert?
An sich ist an den drei Zeilen nichts auszusetzen, kannst du vielleicht die ganze Klasse oder das Projekt hochladen?
huuuuuh - Fr 24.12.10 14:01
keine ahnung.
chg_img_size und
del_orig sind ganz normale bool-variablen. und ab und zu werden die mir als
null angezeigt. nicht immer, auch das ist seltsam...
hier die klasse:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72:
| public class settings { public settings() { scn_int = 60; scn_dir = ""; con_img_ext[0] = ".jpg"; chg_img_size=false; img_width=800; img_height=600; del_orig=false; converted=new List<string>(); } private int scn_int;
public int Scn_int { get { return scn_int; } set { scn_int = value; } } private string scn_dir;
public string Scn_dir { get { return scn_dir; } set { scn_dir = value; } } private string[] con_img_ext;
public string[] Con_img_ext { get { return con_img_ext; } set { con_img_ext = value; } } private List<string> converted;
public List<string> Converted { get { return converted; } set { converted = value; } } private bool chg_img_size;
public bool Chg_img_size { get { return chg_img_size; } set { chg_img_size = value; } } private int img_width;
public int Img_width { get { return img_width; } set { img_width = value; } } private int img_height;
public int Img_height { get { return img_height; } set { img_height = value; } } private bool del_orig;
public bool Del_orig { get { return del_orig; } set { del_orig = value; } } } |
Yogu - Fr 24.12.10 14:13
huuuuuh hat folgendes geschrieben : |
keine ahnung. chg_img_size und del_orig sind ganz normale bool-variablen. und ab und zu werden die mir als null angezeigt. nicht immer, auch das ist seltsam... |
Das ist in der Tat höchst seltsam, denn Felder vom Typ
bool können gar nicht nie
null sein - denn der interne Wert für
null (also
0) wird bei Booleans als
false ausgewertet. Deshalb sind Boolean-Felder zu Beginn auch automatisch mit
false initialisiert. Mein Debugger zeigt übrigens auch
false an.
huuuuuh hat folgendes geschrieben : |
C#-Quelltext 8:
| /* ... */ con_img_ext[0] = ".jpg"; | |
Hier knallt es, und zwar zu Recht: Das Feld
con_img_ext wurde noch nicht initialisert, ist also
null. Du musst es vorher mit
con_img_ext = new string[1] oder einer anderen Anzahl von Elementen initialisieren. Mein Debugger zeigt übrigens diese Zeile als Fehlerquelle an, nicht eine der drei von dir genannten.
Dein Visual Studio scheint mir nicht mehr ganz in Ordnung zu sein... Vielleicht hilft eine Neuinstallation?
PS: Die
Namenskonventionen [
http://msdn.microsoft.com/en-us/library/xzf533w0%28v=vs.71%29.aspx] solltest du dir nochmal anschauen. Typbezeichner schreibt man groß, und Unterstriche sind eigentlich generell verboten ;)
huuuuuh - Fr 24.12.10 14:21
ah, verdammt, dummer fehler :( werde wohl nie lernen, das man Arrays vorher initialisieren muss...
naja, Danke aufjedenfall, auch für den Link. mit Namenskonventionen hab ichs (noch) nich so ;) wünsch dir frohe weihnachten
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!