C# Eigenschaften (Get und Set)
Eigenschaften und Kapselung
Bevor wir mit der Erklärung von Eigenschaften beginnen, sollten Sie über ein grundlegendes Verständnis von „Kapselung“ verfügen.
Die Bedeutung von Kapselung besteht darin, sicherzustellen, dass „sensible“ Daten vor Benutzern verborgen bleiben. Um dies zu erreichen, müssen Sie:
- Felder/Variablen deklarieren als
private
- Bereitstellung der Methoden
public
get
undset
durch Eigenschaften, um auf den Wert einesprivate
-Felds zuzugreifen und ihn zu aktualisieren
Eigenschaften
Aus dem vorherigen Kapitel haben Sie gelernt, dass auf private
-Variablen nur innerhalb derselben Klasse zugegriffen werden kann (eine externe Klasse hat keinen Zugriff darauf). Manchmal müssen wir jedoch auf sie zugreifen – und das geht mit Eigenschaften.
Eine Eigenschaft ist wie eine Kombination aus einer Variablen und einer Methode und verfügt über zwei Methoden: ein get
und ein set
-Methode:
Beispiel
class Person
{
private string name; // feld
public string Name // eigentum
{
get { return name; } // get-Methode
set { name = value; } // set-Methode
}
}
Beispiel erklärt
Die Eigenschaft Name
ist mit dem Feld Name
verknüpft. Es empfiehlt sich, für die Eigenschaft und das private Feld denselben Namen zu verwenden, jedoch mit einem Großbuchstaben als Anfangsbuchstaben.
Die Methode get
gibt den Wert der Variablen zurück name
.
Die Methode set
weist dem name
value zu variabel. Das Schlüsselwort value
stellt den Wert dar, den wir der Eigenschaft zuweisen.
Wenn Sie es nicht vollständig verstehen, schauen Sie sich das folgende Beispiel an.
Jetzt können wir die Eigenschaft Name
verwenden, um auf die zuzugreifen und sie zu aktualisieren private
feld der Klasse Person
:
Beispiel
class Person
{
private string name; // feld
public string Name // eigentum
{
get { return name; }
set { name = value; }
}
}
class Program
{
static void Main(string[] args)
{
Person myObj = new Person();
myObj.Name = "Liam";
Console.WriteLine(myObj.Name);
}
}
Die Ausgabe wird sein:
Liam
Automatische Eigenschaften (Kurzschrift)
C# bietet auch eine Möglichkeit, abgekürzte/automatische Eigenschaften zu verwenden, bei der Sie das Feld für die Eigenschaft nicht definieren müssen und nur get;
und set;
innerhalb der Eigenschaft.
Das folgende Beispiel führt zum gleichen Ergebnis wie das obige Beispiel. Der einzige Unterschied besteht darin, dass weniger Code vorhanden ist:
Beispiel
Automatische Eigenschaften verwenden:
class Person
{
public string Name // eigentum
{ get; set; }
}
class Program
{
static void Main(string[] args)
{
Person myObj = new Person();
myObj.Name = "Liam";
Console.WriteLine(myObj.Name);
}
}
Die Ausgabe wird sein:
Liam
Warum Kapselung?
- Bessere Kontrolle der Klassenmitglieder (verringern Sie die Wahrscheinlichkeit, dass Sie selbst (oder andere) den Code durcheinander bringen)
- Felder können schreibgeschützt (wenn Sie nur die Methode
get
verwenden) oder schreibgeschützt gemacht werden (wenn Sie nur die Methodeset
verwenden) - Flexibel: Der Programmierer kann einen Teil des Codes ändern, ohne dass sich dies auf andere Teile auswirkt
- Erhöhte Datensicherheit