Gepostet: |
Casten/Konvertieren | ||||||||||
Hi, habe mal ne Verständnissfrage: wodrin lieg der Unterschied wenn ich über 1)
oder über 2)
ein objekt Konvertiere??(die erste Möglichkeit funkioniert bei mir eh nur im seltesten Fall) |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Im ersten Fall wandelst du explizit einen Typen um. Das kann unter Umständen mit Informationsverlust geschehen, sofern C# aber einen Weg sieht, den einen Datentypen in den anderen zu konvertieren, so wird das anstandslos ausgeführt. Mit der Klasse Convert kannst du prinzipiell mehr und besser konvertieren. So ist es z.B. möglich, Strings in ints umzuwandeln, während der explizite Weg über int s = (int) "17" überhaupt nicht möglich ist. Das ist eben nicht einfach mit dem Abschneiden von ein paar Bytes etc. möglich. Außerdem bekommst du mit Convert auch eine Fehlermeldung, falls du z.B. einen int in byte umwandelst, und dieser Wert nicht in byte reinpasst. Über den anderen Weg dürfte das C# ohne Probleme machen. Bsp.: int i = 100000; |
|||||||||||
Zum Seitenanfang | Homepage ICQ | ||||||||||
Gepostet: |
|||||||||||
Jo,vielen dank für die Antwort!Das erklärt einiges! Was ich jedoch nicht verstehe ist das in manchen C# den man findet halt die Explizite Form findet, wenn ich nun diesen Code Compiliere funktioniert das auch, nur wenn ich dann dieselbe Konvertierung(also Datentypen sind gleich) in einer von mir geschriebene Anwendung dann bekomme ich einen Fehler(entweder der gewünsche Konvertierungsvorgang ist nichtmöglich oder benutzen sie zum Überschreiben nicht aktivierte Syntax???) kannst du mir dazu noch was sagen? |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Also normalerweise kannst du über den Konvertierungsoperator (explizite Konvertierung) nur ein paar bestimmte Konvertierungen vornehmen. Also hauptsächlich Fest- und Gleitkommazahlen ineinander umwandeln und in jeweils kleinere / größere Zahlenbereiche umwandeln. Wenn also eine dieser Konvertierungen in einer Anwendung funktioniert, dann funktioniert es auch in einer zweiten Anwendung. Ansonsten ist die Konvertierung allgemein nicht möglich und die bekommst die Fehlermeldung "Cannot convert type '<a>' to '<b>'". Mit der von dir angegebenen Fehlermeldung kann ich leider nichts anfangen - hab ich einfach noch nie gesehen... |
|||||||||||
Zum Seitenanfang | Homepage ICQ | ||||||||||
Gepostet: |
|||||||||||
...also erstmal thx für deine antwort! Ich finds erlich gesagt auch ziemlich komisch das das in dem einem Programm funtzt und in dem andren wieder nicht! Aber System.Convert.toXYZ bekommt man es ja hin daher nicht so schlimm! |
|||||||||||
Zum Seitenanfang | |||||||||||