Frage von ZerricK, 60

C# Get und Set erklärung?

Hallo, ich lerne zurzeit C#, ich glaub ich weiß das ein oder andere und wenn ich was nicht versteh gucke ich in Google oder in Youtube. Das einzigste was ich nicht ganz verstehen kann und ich in Google nix wirkliches gefunden habe ist Get und Set. Also ich versteh was es sein soll, aber z.B was macht es wenn man "public String Firstname { get; set; }" macht?

Danke im Vorraus :)

Antwort
von PWolff, 35
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).

Kommentar von PWolff ,

Literaturhinweis:

http://openbook.rheinwerk-verlag.de/visual\_csharp\_2012/1997\_03\_004.html#dodt...

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; }
}

)

Kommentar von ZerricK ,

Ok Danke für die Information^^

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten