InvalidCastException

14/09/2008 - 19:53 von Alberto Luca | Report spam
Hallo NewsGroup,

Coding:
Int32 intIVAnz3Mon = 0;
string x = ldr["AnzIV3Mon"].ToString(); // => 0
intIVAnz3Mon = (Int32)ldr["AnzIV3Mon"]; // => InvalidCastException

Warum wird eine Exception ausgelöst, obwohl "0" enthalten ist?

Besten Dank vorab!
Ciao, Alberto
 

Lesen sie die antworten

#1 Frank Dzaebel
15/09/2008 - 06:54 | Warnen spam
Hallo Alberto,

Int32 intIVAnz3Mon = 0;
string x = ldr["AnzIV3Mon"].ToString(); // => 0
intIVAnz3Mon = (Int32)ldr["AnzIV3Mon"]; // => InvalidCastException
Warum wird eine Exception ausgelöst, obwohl "0" enthalten ist?



Zum Beispiel in so einem Fall:

DataTable dt = new DataTable();
dt.Columns.Add("AnzIV3Mon", typeof(uint));
DataRow ldr = dt.NewRow();
ldr["AnzIV3Mon"] = 0;
Int32 intIVAnz3Mon = 0;
MessageBox.Show(ldr["AnzIV3Mon"].GetType().FullName);
string x = ldr["AnzIV3Mon"].ToString();
intIVAnz3Mon = (Int32)ldr["AnzIV3Mon"];
____________________

bei der MessageBox sollte "System.Int32" herauskommen,
sonst kann es im Normalfall eine InvalidCastException
geben.

____________________

BTW some Tips:

- verwende "int" anstatt Int32 in den meisten Fàllen.

- Schreibe *nicht* den Typ der Variablen vorneweg,
wie bei "intIVAnz..." (keine ungarische Notation mehr).

- die Spaltennamen wiederholst Du öfter in strings.
Besser hier die z.B. in eine statische Klasse zu
schreiben und von da zu benutzen. Oder sie aus
einem typsicheren DataSet zu holen. Dieses
wird Dir ja normal automatisch erstellt, wenn Du
eine Verbindung über das Datenquellenfenster
hinzufügst.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen