C# Get und Set erklärung?

...komplette Frage anzeigen

1 Antwort

public String Firstname { get; set; }

deklariert eine (öffentliche - public) Eigenschaft namens Firstname, die sowohl ausgelesen (get) als auch überschrieben (set) werden kann.

Im Gegensatz hierzu deklariert

public String Firstname { get; }

eine schreibgeschützte (nur-lese- / read only) Eigenschaft. Du kannst auf den Wert dieser Eigenschaft von überall her lesend zugreifen (z. B.

labelVollerName.Text = person.Firstname + " " + person.Lastname;

), aber wenn du versuchst, schreibend auf sie zuzugreifen (z. B.

person.Firstname = "Karl";

), bekommst du eine Fehlermeldung vom Compiler.

Du kannst auch lesegeschützte Eigenschaften deklarieren, die sich beschreiben lassen, z. B.

public String writeOnlyString { set; }

und so was wurde früher auch ab und zu gemacht, aber das ist nicht intuitiv und nicht übersichtlich und gilt allgemein als schlechter Stil. Angemessener ist eine Methode (ohne Rückgabewert - void).

Literaturhinweis:

http://openbook.rheinwerk-verlag.de/visual\_csharp\_2012/1997\_03\_004.html#dodtp0019e906-4cca-4f1a-a629-058e656f2390

Wenn ich das überfliege, könnte es sein, dass deine Frage sich auch auf den letzten Abschnitt bezieht, wo die Methoden get und set nicht ausdrücklich definiert werden.

Bei dieser Abkürzung ergänzt der Compiler (genauer wohl der Präprozessor, der den Programmtext für den Compiler aufarbeitet) sowohl eine private Variable als auch diese Methoden get und set.

(D. h., aus

public String Firstname { get; set; }

wird im Hintergrund - also ohne dass du davon ohne Tricks etwas zu sehen bekommst -

private String _Firstname;
public String Firstname {
 get { return _Firstname; }
 set { _Firstname = value; }
}

)

0

Was möchtest Du wissen?