Entwickler-Ecke

C# - Die Sprache - Problem bei Konvertierung. Was mache ich falsch?


Help_Me - Mi 28.04.10 11:16
Titel: Problem bei Konvertierung. Was mache ich falsch?
Hallo!
Mich wundert es, dass wenn ich beim unteren Code die Konvertierung weg lasse, ich eine Meldung bekomme,
dass "object nicht in double konvertiert werden kann". Dabei wird doch davor geprüft, ob es sich um
ein double handelt.


C#-Quelltext
1:
2:
3:
4:
if (obj is double)
{
    aktuellesDatum[j] = DateTime.FromOADate(Convert.ToDouble(obj));
}


Wie müsste den der Code ohne Konvertierung richtig lauten? Ich dachte ja  obj as double
aber das funktioniert auch nicht.

Grüße


danielf - Mi 28.04.10 11:24

Leider verbirgst du von welchem Datentyp obj ist. Da es obj heißt vermute ich mal es ist ein object.

Wenn du die Abfrage auf is double machst weißt du zwar, dass es ein double ist.. der Kompilier aber nicht. Deshalb musst du den cast (Convert) machen.

As macht im Prinzip auch ein cast nur, dass es bei einem falschen Datentyp keine Fehlermeldung wirft, sondern den Typ null zurück gibt:

C#-Quelltext
1:
2:
3:
4:
5:
6:
double objAsDouble = obj as double;

if (objAsDouble != null)
{
   aktuellesDatum[j] = DateTIme.FromOADate(objAsDouble);
}

bzw.

C#-Quelltext
1:
2:
3:
4:
if (obj is double)
{
   aktuellesDatum[j] = DateTime.FromOADate((double) obj);
}


Gruß


Help_Me - Mi 28.04.10 12:04

Super...vielen Dank!