Stinken C-Casts?



  • Huhu,
    viele C++ler sind der Überzeugung das C-Cast stinken.
    Ich habe hier mal Code:

    private void data_received(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
            {
    
                SerialPort sp = (SerialPort)sender;
                MessageBox.Show(sp.PortName);
            }
    

    Was sagen die C#ler dazu, stinkt das auch? Gibt es einen anderen, vielleicht sichereren Weg?



  • In C++ verabscheut man "C-Casts" zurecht weil es bessere Alternativen gibt, in C# gibts aber keinen andren mir bekannten Cast. Downcasts wie der da in deinem Code stinken meistens, oft gehts aber leider nicht anders. Das da dürfte so ein Fall sein, da du vermutlich keinen Einfluss auf den Typ des ersten Parameters hast. Also gehts vermutlich nicht besser. Sicher ist das da mehr oder weniger sowieso weil eine Exception fliegt falls dein sender kein SerialPort is...



  • viele C++ler sind der Überzeugung das C-Cast stinken.

    Tun sie auch.

    Was sagen die C#ler dazu, stinkt das auch? Gibt es einen anderen, vielleicht sichereren Weg?

    Also es gibt noch "as".
    Bloss: der C# Cast hat mit dem C-Cast nur die Syntax gemein. Der C-Cast ist "unsafe", der C# Cast dagegen nicht.


  • Administrator

    Du vergleichst hier Äpfel mit Birnen. Der C Cast und C# Cast haben null und gar nichts gemeinsam, ausser dass sie gleich aussehen. Der C# ist absolut sicher, denn wenn du was falsch machst, bekommst du sofort eine Exception um die Ohren geworfen. Mit einem C Cast kannst du aber so gut wie alles anstellen, der Kompiler wird sich nie beklagen, dein Programm aber womöglich durch undefiniertes Verhalten dir das Leben schwer machen.

    Grüssli



  • Oki doki, danke für die Antworten!


Anmelden zum Antworten