C# Zugriffsmodifikatoren
Zugriffsmodifikatoren
Mittlerweile sind Sie mit dem Schlüsselwort public
, das in vielen unserer Beispiele vorkommt, recht vertraut:
public string color;
Das Schlüsselwort public
ist ein Zugriffsmodifikator, der zum Festlegen der Zugriffsebene/Sichtbarkeit für Klassen, Felder, Methoden und Eigenschaften verwendet wird.
C# verfügt über die folgenden Zugriffsmodifikatoren:
Modifikator | Beschreibung |
---|---|
public |
Der Code ist für alle Klassen zugänglich |
private |
Der Code ist nur innerhalb derselben Klasse zugänglich |
protected |
Der Code ist innerhalb derselben Klasse oder in einer von dieser Klasse geerbten Klasse zugänglich. Mehr über Vererbung erfahren Sie in einem späteren Kapitel |
internal |
Der Code ist nur innerhalb seiner eigenen Assembly zugänglich, nicht jedoch von einer anderen Assembly aus. Mehr dazu erfahren Sie in einem späteren Kapitel |
Es gibt auch zwei Kombinationen: protected internal
und private protected
.
Konzentrieren wir uns zunächst auf die Modifikatoren public
und private
.
Privater Modifikator
Wenn Sie ein Feld mit einem private
-Zugriffsmodifikator deklarieren, kann nur innerhalb derselben Klasse darauf zugegriffen werden:
Beispiel
class Car
{private string model = "Mustang"; static void Main(string[] args)
{Car myObj = new Car(); Console.WriteLine(myObj.model);
}}
Die Ausgabe wird sein:
Mustang
Wenn Sie versuchen, außerhalb der Klasse darauf zuzugreifen, tritt ein Fehler auf:
Beispiel
class Car
{
private string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
Die Ausgabe wird sein:
'Car.model' is inaccessible due to its protection level
The field 'Car.model' is assigned but its value is never used
Öffentlicher Modifikator
Wenn Sie ein Feld mit einem public
-Zugriffsmodifikator deklarieren, ist es für alle Klassen zugänglich:
Beispiel
class Car
{
public string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
Die Ausgabe wird sein:
Mustang
Warum Zugriffsmodifikatoren?
Um die Sichtbarkeit von Klassenmitgliedern zu steuern (die Sicherheitsstufe jeder einzelnen Klasse und jedes Klassenmitglieds).
Um eine „Kapselung“ zu erreichen – das ist der Prozess, der sicherstellt, dass „sensible“ Daten vor Benutzern verborgen bleiben. Dies geschieht durch die Deklaration von Feldern als private
. Mehr dazu erfahren Sie im nächsten Kapitel.
Hinweis: Standardmäßig sind alle Mitglieder einer Klasse privat
, wenn Sie keinen Zugriffsmodifikator angeben:
Beispiel
class Car
{
string model; // private
string year; // private
}