Klassen werte und funktionen const



  • Hallo,

    Ich frage mich wie ich es bei C# hinbekomme, die setter und getter constant zu setzen? oder geht das nicht?

    Bei C++ sieht es so aus:
    getter

    void getBla () const;
    

    setter

    void setBla (const sring bla);
    

    Wie kann ich das in C# realisieren?

    mfg



  • Gar nicht. C# kennt keine const Methoden und der Sinn eines const Arguments das per value übergeben wird erschließt sich mir auch nicht.

    Was willst Du erreichen?



  • Das die werte die ich erhalte, nicht mehr überschrieben werden darf.

    Daher dachte ich auch an const 🙂



  • Nachdem dein Feld erstmalig beschrieben wurde, soll es nicht mehr geändert werden dürfen? Oder was genau willst Du vor überschreiben schützen?

    Dann schau Dir mal readonly an. Oder Properties mit {get; private set;}.
    Bin nicht sicher was Du genau willst.



  • Naja z.b ich erhalte über socket einen wert (z.B den nickt aus der Datenbank), oder andere user Sachen, und die sollen nach dem abruf nicht mehr geändert werden dürfen.



  • Dann ändere sie nicht 😃

    const spielt in C# kaum eine Rolle und es ist nicht möglich konstante Objekte wie in C++ anzulegen. Dafür muss man sich auch nicht mit const-Methoden, const Referenzen und sonstigem Unfug rumärgern.



  • Also geht das garnicht ja?
    Weil ich möcte das schon ein wenig sicher in der hinsicht machen, das man mit anderen Programmen auch net das ändern kann 🙂



  • readonly oder private setter bei Properties. Viel mehr gibt's nicht.

    (Letzteres verhindert aber nur, dass das ganze Feld-Objekt nicht ausgetauscht wird. Properties des Objekts selbst sind wieder offen für alle.)



  • ahh ok, dann bedank ich mich bei dir für die Info.

    mfg



  • b4nan1 schrieb:

    Also geht das garnicht ja?
    Weil ich möcte das schon ein wenig sicher in der hinsicht machen, das man mit anderen Programmen auch net das ändern kann 🙂

    const ist _kein_ Sicherheitskonzept. Es verhindert nichts, sondern warnt nur beim compilieren. Kannst Du ja auch jederzeit wegcasten...



  • Du kannst auch ein aehnliches Verhalten mit Objektorientierten Ansaetzen versuchen. Z.b. immutable Objekte wie String.


Log in to reply