Unterschied CByte und Convert.ToByte ?!

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von vanitas-mundi.

    Unterschied CByte und Convert.ToByte ?!

    Hallo,

    Gibt es einen Unterschied zwischen "CByte()" und "Convert.ToByte()" ?

    Weil bei einer Variante spuckt die IDE einen Fehler aus:

    VB.NET-Quellcode

    1. Dim chr As Char = CChar("x")
    2. 'Hier kommt die Fehlermeldung, dass der Typ Char nicht in Byte umgewandelt werden könne:
    3. Dim b As Byte = CByte(chr)


    Mit dieser Variante funktioniert es allerdings:

    VB.NET-Quellcode

    1. Dim chr As Char = CChar("x")
    2. Dim b As Byte = Convert.ToByte(chr)
    Grundsätzlich sollten Sie die Typkonvertierungsfunktionen von Visual Basic den .NET Framework-Methoden wie ToString() entweder für die Convert-Klasse oder eine individuelle Typstruktur oder -klasse vorziehen. Die Visual Basic-Funktionen sind auf eine optimale Interaktion mit Visual Basic-Code ausgerichtet. Außerdem wird Ihr Quellcode dadurch kürzer und besser lesbar. Darüber hinaus erzeugen die .NET Framework-Konvertierungsmethoden nicht immer die gleichen Ergebnisse wie die Visual Basic-Funktionen. Dies ist z. B. bei der Konvertierung von Boolean in Integer der Fall.

    Könnte es daran liegen? Mehr hier.
    Ich bin mir nicht zu 100% sicher aber sowas wie CInt, CByte konvertiert eine Variable die zwar von jenem Datentyp sein soll, es aber nicht ist, zu diesem.

    Also z.B.:
    Dim i As Integer = CInt("45")
    Also eine Zahl die einem String steht wird zu 45.
    Mit Byte müsstest du auch ein Byte vom falschen Datentyp angeben

    Dim b As Byte = CByte("120")

    Wobei bei einem Convert.ToByte() wirklich ein Zeichen umgewandelt wird.
    ich hab mal folgendes ausprobiert:

    VB.NET-Quellcode

    1. Dim fs As New IO.FileStream("C:\Users\Philipp\Desktop\test.txt", IO.FileMode.OpenOrCreate)
    2. fs.WriteByte(Convert.ToByte(CChar("a")))
    3. 'Und danach die VB-Variante, nachdem ich sie mit dem Error-Provider korrigiert hab (mir wurde anstatt CChar() AscW(CChar()) vorgeschalgen:
    4. 'fs.WriteByte(CByte(AscW(CChar("a"))))


    Es kam beides mal das gleiche ergebnis raus, nämlich eine Textdatei mit dem Inhalt a.

    --> Aufgrund von Kevins Post entscheide ich mir für die VB-Variante, aber ich glaube dass es eine elegantere Variante als "AscW(CChar("x")) gibt...