Kopie oder Referenz?
-
um mich ein bisschen mit den eigenarten von c# vertraut zu machen, habe ich eine testklasse erstellt:
using System.Windows.Forms; // für messagebox namespace test { public class Test { string[] s = new string[] { "s1", "s2", "s3" }; public Test() { MessageBox.Show(s[0] + s[1] + s[2]); // nur so, funktionstest, funzt. } public string[] GetStringArray() { return s; } } }
in einem anderen form erstelle ich das objekt und rufe über dieses objekt GetStringArray auf:
Test test = new Test(); string[] s = test.GetStringArray();
was passiert hier? wird eine tiefe kopie erzeugt?
wenn ja, kann ich GetStringArray so schreiben, dass nur eine referenz zurückgegeben wird?
-
Du bekommst eine 2. Referenz auf dein String-Array "s" zurück.
-
ok, das heisst s[0] = "xyz" ändert den member! kann ich das irgendwie unveränderbar machen? hab schon was mit const probiert, krieg aber nen error
public const string[] GetStringArray()
Fehler 3 Ungültiges Token "{" in Klasse, Struktur oder Schnittstellenmemberdeklaration. E:\dot.net\SimpleSerialCS2\SimpleSerial\test.cs 15 9 SimpleSerial
public string[] const GetStringArray()
Fehler 1 Ungültiges Token "const" in Klasse, Struktur oder Schnittstellenmemberdeklaration. E:\dot.net\SimpleSerialCS2\SimpleSerial\test.cs 14 25 SimpleSerial
-
Du könntest ne ReadOnlyCollection zurück geben.
-
vielen dank für den tip!