Dass das nicht geht …
int _int = 42;
Object _object = _int;
long _long = (long) _object;
Grundsätzlich kann man natürlich sehr wohl ein int in einen long konvertieren. Ein C#-int kann Werte von –231 bis 231–1 aufnehmen, C#-long schafft sogar –263 bis 263–1, das passt also “dicke”
Würde es auch, denn selbst mein Visual Studio weiß natürlich, was in meinem _object steckt:
In Erinnerung an meine Compilerbau Vorlesungen dämmert mir jedoch, dass das Problem schon früher passiert: int und long sind in C# Wertetypen auf dem Stack und beim Cast wird versucht diesen Wert entsprechend dem definierten Typen zu interpretieren. Beim Versuch die int32 Struktur als int64 zu interpretieren wird die InvalidCastException, eigentlich ja auch richtig so …
Am 30. December 2009 um 00:53 Uhr
…wer versucht denn auch so was
tz…
Am 30. December 2009 um 01:40 Uhr
ja, ich … doof
Am 5. February 2010 um 23:21 Uhr
du bist ein Freak!