Was ist der Zweck der Eigenschaften "get" und "set" in C #?

7

Ich habe eine Methode zum Setzen von Werten gesehen. Kann mir jemand den Zweck sagen?

%Vor%

Warum eigentlich diese Dinge benutzen? Für den globalen Zugriff, oder gibt es einen anderen Grund für diese Art von Sache?

    
TechGuy 31.05.2012, 04:11
quelle

7 Antworten

15

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

%Vor%

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%     
Jupaol 31.05.2012, 04:12
quelle
9

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%     
rob_williams 31.05.2012 06:56
quelle
3

Überprüfen Sie diese Links, .. sie gibt eine klare Erklärung.

Ссылка

Ссылка

Wenn UserName und UserPwd Klassenvariablen sind, besser so zu verwenden

%Vor%     
stay_hungry 31.05.2012 04:20
quelle
2

Standardmethode zum Implementieren von Eigenschaften in C # . UserName und UserPwd sind private Membervariablen ( string type) der Klasse, in der diese 2 Methoden definiert sind.

    
kaveman 31.05.2012 04:13
quelle
2

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.

    
Shyju 31.05.2012 04:15
quelle
2

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)

    
Tilak 31.05.2012 04:16
quelle
1

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 set Accessor.

  • 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) .

Jodrell 18.11.2014 15:03
quelle

Tags und Links