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:
gettervoid 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 kannconst 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.