Entwickler-Ecke
C# - Die Sprache - Boxing Unboxing die Zahl 15 ist kein short?
mmgg - Mo 30.06.14 00:02
Titel: Boxing Unboxing die Zahl 15 ist kein short?
Nabend,
dieses Beispiel ist aus einem Buch
http://openbook.galileocomputing.de/csharp/kap09.htm#Xxx474305
(10.2 Boxing Unboxing)
Während des Unboxings muss der Typ exakt übereinstimmen, denn es ist keine Rückkonvertierung in einen kompatiblen Typ möglich:
object o = 15;
short s = (short) o; // Schlägt fehl, o enthält keinen short-Wert
Das stimmt zwar, das schlägt fehl wenn ich es ausführen will, ich kann aber mit der Begründung nicht viel anfangen(o kein short wert).
Short ist ein Typ von -2hoch(x) bis +2hoch(x),
Ein paar Zeilen weiter oben wird dem object o ein int zugewiesen. Wenn also in dem Unboxing Beispiel nur:
o = 15;
short s = (short) o;
stehen würde, wär alles klar. Ist das vielleicht nur ein Flüchtigkeitsfehler vom Author? Ich bin der letzte der sich daran hochziehen würde, nur bin ich halt gerade dabei dieses Thema abzugraben und frage mich dann überseh ich was fehllt was usw.
Christian S. - Mo 30.06.14 07:18
Hallo,
das ist schon richtig so, es wird ja auch weiter unten in dem Buch noch ausgeführt. o enthält nach der Zuweisung einen in ein Objekt verpackten int und das ist nun mal kein short. Die Lösung wird weiter unten im Buch gezeigt: short t = (short)(int) o;
Viele Grüße
Christian
mmgg - Mo 30.06.14 16:35
So schreib ich das in meine Consolen-App, eine Variable vom Typ object bekommt 15. Damit ist festgelegt dass o vom Typ int ist?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| class Programm { static void Main(string[] args) { object o = 15; short s = (short)o; Console.ReadLine(); } } |
Die Lösung hat ich auch gesehen, lösen lässt es sich aber auch so :
C#-Quelltext
1: 2: 3:
| short v = 123; object o = v; short s = (short)o; |
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Christian S. - Mo 30.06.14 19:58
mmgg hat folgendes geschrieben : |
Damit ist festgelegt dass o vom Typ int ist? |
Ja, wenn es keine weiteren Angaben gibt, dann werden ganze Zahlen als
int angsehen, also ist
15 ein int. Sieht man sogar schon im Editor, wenn man mal mit dem Mauszeiger über die Ziffern fährt, dann geht ein entsprechendes Hinweisfeld auf, was den Typ anzeigt.
mmgg - Di 08.07.14 03:27
naja, jetzt wo dus sagst, man dankt
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!