Announcement

Collapse
No announcement yet.

Nachträgliches Zuweisen von Werten an ein Array-Item

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nachträgliches Zuweisen von Werten an ein Array-Item

    Hallo!
    Ich dachte die ganze Zeit, dass C# die Werte nur flach speichert (d.h. im Hintergrund die Referenzen, die im Grunde Pointer sind).
    Offensichtlich ist es mit den Elementen von Arrays und Listen nicht so, wie das folgende Beispiel zeigt:

    Code:
    string strSource = "davor";
    string[] ar = new string[2];
    ar[0] = strSource;
    strSource = "danach";
    Erst wird dem ersten Elemen von ar der Wert "davor" zugewiesen, nach der 2. Zuweisung, obwohl der Wert von strSource sich geändert hat, bleibt ar[0] == "davor".
    Ich suche nach einer Möglichkeit, dass sich der Wert des Arrays auch ändert, wenn ich den Wert der Quelle ändere (im Beispile wäre das, dass ar[0] auf "danach" gesetzt werde).

    Kennt jemand eine Lösung dazu oder ist es eine unveränderbare Eigenschaft?

    Dank im voraus, Alex.

  • #2
    string ist ein Verweistyp und kein Referenztyp ... für Referenztypen würde deine Annahme stimmen.
    Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

    Comment


    • #3
      String würde ich an sich auch nicht als Referenz nehmen, weil sich die Klasse teilweise sehr merkwürdig verhält

      Comment


      • #4
        string ist ein Verweistyp und kein Referenztyp
        Ein Verweistyp ist für mich das selbe wie ein Referenztyp
        Du wolltest wahrscheinlich sagen das string ein Valuetype und kein Referencetype ist. Wobei ich string auch nicht als richtigen Valuetype sehe, ist immerhin eine Klasse und kein struct. Korrekter finde ich die Beschreibung das string immutable ist. Heißt du kannst einen string nicht ändern sondern durch jedes ändern(oder zuweisen) erhältst du einen neuen string. Du hast also niemals zwei String Variablen die auf das selbe String Object verweisen(wir ignorieren mal das string interning im Hintergrund).

        Wenn du einen veränderbaren String brauchst der sich wie ein Referenztyp verhält musst du den StringBuilder verwenden.

        Comment


        • #5
          entschuldigung natürlich eher Valuetype aber mit deiner Beschreibung String == Klasse finde ich deine aussage auch wieder sehr logisch.

          Bleibt als einzig logisch gute Erklärung dass ein String immutable ist.
          Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

          Comment

          Working...
          X