Zugriffsmodifier
In C# spielen Zugriffsmodifizierer (Access Modifiers) eine wichtige Rolle beim Festlegen der Sichtbarkeit und des Zugriffs auf Klassen, Methoden und Properties. Hier ist eine Übersicht:
1. Klassen
Section titled “1. Klassen”Zugriffsmodifizierer bei Klassen bestimmen, wer die Klasse instanziieren oder darauf zugreifen kann:
public
: Die Klasse ist von überall aus sichtbar.internal
(Standard, wenn nichts angegeben): Die Klasse ist nur im gleichen Assembly sichtbar.private
: Nur innerhalb der umschließenden Klasse sichtbar (gilt für verschachtelte Klassen).
2. Methoden
Section titled “2. Methoden”Methodenmodifizierer bestimmen, wer die Methode aufrufen kann:
public
: Methode ist von überall zugreifbar.private
: Methode ist nur innerhalb der eigenen Klasse zugreifbar.protected
: Methode ist innerhalb der eigenen Klasse und abgeleiteter Klassen zugreifbar.internal
: Methode ist innerhalb des gleichen Assembly sichtbar.
3. Properties
Section titled “3. Properties”Properties in C# kombinieren Getter- und Setter-Methoden und können individuell mit Zugriffsmodifizierern versehen werden:
3.1 Varianten von Properties
Section titled “3.1 Varianten von Properties”a) Standard-Properties
Section titled “a) Standard-Properties”public string Name { get; set; }
- Mit
public
ist die Property von überall les- und schreibbar. - Zugriffsbeschränkungen können für Getter und Setter unterschiedlich sein:
public string Name { get; private set; }
- In diesem Fall kann die Property von überall gelesen, aber nur von der Klasse selbst gesetzt werden.
b) Getter-Only Properties
Section titled “b) Getter-Only Properties”Properties ohne Setter können nur gelesen werden:
public string Name { get; }
- Der Wert wird meist durch einen Konstruktor oder initiale Zuweisung festgelegt:
public string Name { get; } = "Default";
c) Properties mit Backing Field
Section titled “c) Properties mit Backing Field”Ein Backing Field wird verwendet, um mehr Kontrolle über die Property zu haben.
Der Setter kann auf den zu setzenden Wert mit dem Schlüsselwort value
zugreifen.
private int _age;public int Age{ get => _age; set { if (value >= 0) _age = value; }}
e) Init-Only Properties
Section titled “e) Init-Only Properties”Ab C# 9.0 eingeführt, können diese während der Objektinitialisierung gesetzt, aber danach nicht mehr geändert werden:
public string Name { get; init; }
Verwendung:
var person = new Person { Name = "John" }; // erlaubtperson.Name = "Doe"; // nicht erlaubt
Zusammenfassung
Section titled “Zusammenfassung”Zugriffsmodifizierer in C# bieten Flexibilität und Kontrolle über die Sichtbarkeit von Klassen, Methoden und Properties. Besonders bei Properties ermöglicht die Kombination von Getter/Setter-Modifikatoren, Backing Fields und neuen Features wie init
eine granulare Kontrolle über den Zugriff.