C#: Grundelegende Fragen zu Objekten...

saftmeister

Nutze den Saft!
Du hast Recht, string ist ein Alias für String.

Vielleicht hilft es dir, wenn man es visualisiert, was die CLR macht:

C#:
class String
{
  // Private Eigenschaft um den Wert zu speichern
  private System.Char[] value;

  public String(System.Char[] val)
  {
    this.value = val;
  }

  public String toUpper()
  {
    String a = new String("");
    for(int i = 0; i < value.length; i++)
    a += hier_eine_funktion_die_das_Zeichen_prueft_und_ggf_in_Grossbuchstaben_wandelt(this.value[i]);

    return a;
  }

  Hier_eine_Methode_die_den_Operator_ist_gleich_als_Zuweisung_implementiert....
}

Das ganze wird von der Runtime "simuliert". Der Grund, warum die Methoden alle wiederum Strings zurück geben, basiert darauf, das ein einmal erstelltes String-Objekt nicht mehr verändert werden kann. Zumindest, wenn man der MSDN an diesem Punkt glauben schenken darf. ;-)
 

sheel

I love Asm
Ja, das ist so.

Werte in einem char-Array ändern wäre zwar kein Problem,
aber bei string ist alles darauf ausgelegt,
dass er einmal befüllt und dann nie wieder geändert wird.

Wenn man ihn ändern will, bekommt man in Wirklichkeit
einen neuen string mit einem neuen char-Array.
Der Alte wird dann vom Garbage Collector entsorgt.
 

Neue Beiträge