Skip to content

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

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

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

Properties in C# kombinieren Getter- und Setter-Methoden und können individuell mit Zugriffsmodifizierern versehen werden:

3.1 Varianten von Properties

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

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

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

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" }; // erlaubt
person.Name = "Doe"; // nicht erlaubt

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.