Sie sind nur Accessoren und Mutatoren. So werden Eigenschaften in C # implementiert
In C # 3 können Sie automatisch implementierte Eigenschaften wie folgt verwenden:
%Vor% Dieser Code wird vom Compiler automatisch in einen Code übersetzt, der dem von Ihnen geposteten ähnlich ist. Mit diesem Code lassen sich Eigenschaften leichter deklarieren, und sie sind ideal, wenn Sie keine benutzerdefinierte Logik in set
oder% co_de implementieren möchten % Methoden, Sie können sogar einen anderen Accessor für die Methode get
verwenden, wodurch die Eigenschaft unveränderlich wird
Im vorherigen Beispiel wird set
nur außerhalb der Klasse gelesen, in der es deklariert wurde. Die einzige Möglichkeit, es zu mutieren, besteht darin, eine Methode dafür oder einfach über den Konstruktor der Klasse verfügbar zu machen. Dies ist nützlich, wenn Sie die Statusänderung Ihrer Entität steuern und explizit machen möchten
Wenn Sie den Eigenschaften etwas Logik hinzufügen möchten, müssen Sie die Eigenschaften manuell schreiben, indem Sie die Methoden MyProperty
und get
genau so implementieren, wie Sie es geschrieben haben:
Beispiel zur Implementierung benutzerdefinierter Logik
%Vor%Es scheint, als ob Sie die Funktionalität von Gettern und Settors verstehen, und andere haben diese Frage beantwortet. "Normale" Klassenvariablen (ohne Getter und Setter) werden "Felder" genannt, und "Eigenschaften" (die Getter und Setter enthalten) kapseln Felder ein.
Der Zweck der Eigenschaften dient zur Kontrolle des externen Zugriffs auf Felder. Wenn Sie möchten, dass eine Variable nur für externe Logik lesbar ist, können Sie die Setter wie folgt weglassen:
%Vor%Sie können den Setter auch privat machen und dieselbe schreibgeschützte Funktionalität erreichen.
Wenn ein Objekt die Möglichkeit hat, (aus welchem Grund auch immer) null zu sein, können Sie garantieren, dass eine Instanz immer so existiert:
%Vor%Eine weitere Verwendung für Eigenschaften ist das Definieren von Indexern.
%Vor%Wenn dieser Indexer definiert ist, können Sie wie folgt auf eine Instanz von DataSet zugreifen:
%Vor% Standardmethode zum Implementieren von Eigenschaften in C # . UserName
und UserPwd
sind private Membervariablen ( string
type) der Klasse, in der diese 2 Methoden definiert sind.
HTTP_USER_NAME
und HTTP_USER_PASSWORD
sind die öffentlichen Eigenschaften Ihrer Klasse. UserName
und UserPwd
könnten Ihr privates Feld sein. Und Sie erlauben anderen Personen, die Werte über diese öffentlichen Eigenschaften festzulegen oder abzurufen. Kein direkter Zugang zu privaten Objekten. Sie können auch eine Logik innerhalb der get-Methode der property.Ex: Sie haben eine öffentliche Eigenschaft namens Age
und in der get-Methode davon können Sie den Wert Ihres privaten Feld namens " dateOfBirth
" und lesen Mach eine Berechnung (CurrentYear-dateOfBirth) und gib das als Alter zurück.
Eigenschaften sind nur Accessoren über Felder. Sie ermöglichen bestimmte Operationen (falls erforderlich) und bieten einen kontrollierten Zugriff auf Felder.
Wenn Sie wissen möchten, wann Eigenschaften verwendet werden sollen und wann nur Felder verwendet werden sollen, überprüfen Sie den Link Eigenschaften vs Felder - Warum spielt es eine Rolle? (Jonathan Aneja)
Von Eigenschaften (C # -Programmierhandbuch)
>Eine Eigenschaft ist ein Element, das einen flexiblen Mechanismus zum Lesen, Schreiben oder Berechnen des Werts eines privaten Felds bereitstellt. Eigenschaften können verwendet werden, als wären sie öffentliche Datenelemente, aber sie sind tatsächlich spezielle Methoden, die Accessoren genannt werden. Dies ermöglicht den einfachen Zugriff auf Daten und trägt weiterhin zur Erhöhung der Sicherheit und Flexibilität von Methoden bei.
In diesem Beispiel speichert die Klasse TimePeriod
einen Zeitraum. Intern speichert die Klasse die Zeit in Sekunden, aber eine Eigenschaft namens Hours
ermöglicht einem Client, eine Zeit in Stunden anzugeben. Die Accessoren für die Hours-Eigenschaft führen die Konvertierung zwischen Stunden und Sekunden durch.
Beispiel
%Vor%Eigenschaftenübersicht
Eigenschaften ermöglichen es einer Klasse, eine öffentliche Methode zum Abrufen und Festlegen von Werten verfügbar zu machen, während der Implementierungs- oder Verifizierungscode ausgeblendet wird.
Ein get -Eigenschaftsaccessor wird verwendet, um den Eigenschaftswert zurückzugeben, und a Der set -Accessor wird verwendet, um einen neuen Wert zuzuweisen. Diese Accessoren können unterschiedliche Zugriffsebenen haben. Weitere Informationen finden Sie unter Einschränken der Zugriffsmöglichkeit für Accessoren (C # -Programmierhandbuch) .
Mit dem Schlüsselwort value wird der Wert definiert, der von
Eigenschaften, die keinen set Accessor implementieren, sind schreibgeschützt.
Bei einfachen Eigenschaften, für die kein benutzerdefinierter Accessor-Code erforderlich ist, sollten Sie die Option zum Verwenden automatisch implementierter Eigenschaften in Betracht ziehen. Weitere Informationen finden Sie unter Auto-Implemented Properties (C # -Programmierhandbuch) .