final method parameter

PeteProgram

Mitglied
Hallo,

ich suche nach einer analogen Lösung in C# für folgende Methodendeklaration in Java

Code:
public void foo(final Object bar) {}

mir geht es dabei um den final methoden Parameter. Gibt es da irgendeine Lösung?

Danke
 
Danke für die Antwort, aber das ist nicht das, was ich suche.

In Java hast Du die Möglichkeit einer Methode per Parameter eine Variable zu übergeben und mit final festzulegen, dass in der Methode keine Veränderung an dieser Variable vornehmen darf, ohne das diese Variable final (in c# als global als const oder readonly) dekariert wurde.

Folgendes geht also nicht:

Code:
public void foo(final Integer bar) {
 bar++;
   doSomething(bar);
}

und müßte z.B. so umgesetzt werden:

Code:
public void foo2(final Integer bar) { 
    Integer barbar = bar;
    doSomething(++barbar);
}
 
Eine Konstante heißt doch Konstante, weil sie konstant sein soll.

Nein ich will keine Konstante ändern - im Gegenteil ich will genau das ausnutzen. Nein final geht nicht in const zu ändern, da meckert der compiler gleich rum, (readonly auch nicht)

Ich erkläre es nochmal:

angenommen ich habe eine Variable "bar", die will ich der Methode "foo" übergeben und sichergehen, dass "foo" an meiner "bar"-Variable keine Veränderungen vornehmen wird. In Java mache ich das wie oben gezeigt - scheinbar kann c# dass jedoch nicht und ich muss dazu einen Workaround basteln. Da mich die Frage dennoch interesiert, wollte ich gerne wissen, ob es vielleicht doch möglich ist.
 
Wenn ich dich richtig verstehe, wills du nicht das Klassen By Referenz übergeben werden.

Mir ist jetzt keine Anweisung dafür bekannt.
Würde vorschlagen eine Copy zu erstellen, vielleicht reicht ja schon die Funktion MemberwiseClone (ist protected, am besten verwenden in Verbindung mit der ICloneable Schnittstelle).
Oder du erstellt das Objekt als Struct, die werden By Value übergeben.
 
Das von dir gewünschte geht nur mit einer als ReadOnly definierten Variable und dann auch nur über den Konstruktur der Klasse

Edit: Hätte mal jeden Post richtig lesen sollen, sorry... :(
Also eine übergebene Variable in einer Methode das Verhalten von readonly beizubringen geht nicht. Und ich const kann man natürlich auch nicht schreiben. Wenn du nur verhindern willst, dass eine VEränderung an der Variable diese Veränderung nicht nach außen übergibt, dann darf der Wert nicht als Referenz übergeben werden. Siehe Vorpost!
 
Zuletzt bearbeitet:
Zurück