Wie teile ich eine Variable zwischen zwei Klassen?

8

Wie würden Sie dasselbe Objekt zwischen zwei anderen Objekten teilen? Zum Beispiel möchte ich etwas in diesem Geschmack:

%Vor%

Hier möchte ich keinen Hinweis auf die Bar-Methode geben. Was ich erreichen möchte, ist etwas, das in C ++ so aussehen würde:

%Vor%

Ich habe gelesen, dass es einige Ref / Out-Sachen gibt, aber ich konnte nicht bekommen, was ich hier frage. Ich konnte nur einige Änderungen im Methodenumfang anwenden, wo ich Ref / Out-Argumente verwendete ... Ich lese auch, dass wir Zeiger verwenden könnten, aber gibt es keinen anderen Weg, es zu tun?

    
Altefquatre 29.03.2010, 04:41
quelle

5 Antworten

9

Dies hat nichts mit dem Teilen von Objekten zu tun. Sie haben einen Verweis auf eine Zeichenfolge in den A-Konstruktor übergeben. Diese Referenz wurde in das private Mitglied foo_ kopiert. Später haben Sie B() aufgerufen, was foo_ zu "changed" geändert hat.

Zu keiner Zeit haben Sie str geändert. str ist eine lokale Variable in main . Du hast nie einen Hinweis darauf gegeben.

Wenn Sie str ändern wollten, hätten Sie B als

definieren können %Vor%

Überlegen Sie:

%Vor%

in main:

%Vor%     
John Saunders 29.03.2010, 04:46
quelle
5

Wickeln Sie Ihre Zeichenfolge in eine Klasse ein. Sie müssen dies tun, da Strings unveränderlich sind. Jeder Versuch, eine Zeichenfolge zu ändern, führt zu einer neuen Zeichenfolge.

%Vor%     
Jimmy 29.03.2010 04:52
quelle
2

Ich würde meine Antwort auf zwei Teile aufteilen: 1) Wenn es sich bei der Variablen um einen Referenztyp handelt, der bereits freigegeben ist, da Sie die Referenz an alle interessierten Objekte übergeben. Das einzige, was Sie beachten sollten, ist, dass die Instanzen des Referenztyps änderbar sind. 2) Wenn die Variable ein Werttyp ist, den Sie ref oder out verwenden müssten, oder einen Wrapper, der änderbar ist, und Sie den Wert innerhalb des Wrappers mithilfe einer Methode oder einer Eigenschaft ändern können. Hoffe das hilft.

    
Ikaso 29.03.2010 04:52
quelle
2

Sie müssen den Parameter als Referenz an Ihre Methode übergeben,

%Vor%     
ace 29.03.2010 05:00
quelle
1

Wenn eine Variable eine Zeichenfolge ist, handelt es sich um eine Referenz. Versuchen Sie, die Zeichenfolge zu klonen. Ссылка

    
Ming-Tang 29.03.2010 05:03
quelle

Tags und Links