Benutzer mit den meisten Antworten
Eigenschaften, get/set

Frage
-
Moin zusammen,
wenn ich mir eine Eigenschaft anlege mit get und set, dann geh ich normal davon aus, dass ich auf die Variable dann auch mit get/ set zugreifen muss ... könnte mir kurz jemand erklären warum es bei diesem Beispiel weggelassen werden kann.
// Auto-Impl Properties for trivial get and set
public double TotalPurchases { get; set; }
cust1.TotalPurchases += 499.99;
Antworten
-
Der C# Compiler nimmt dir einfach die Arbeit ab, das private Feld, auf das getter und setter zugreifen, selbst anlegen zu müssen, d.h. statt
private double totalPurchases;
public double TotalPurchases {
get { return totalPurchases; }
set { totalPurchases = value; }
}
muss man nur nur noch
public double TotalPurchases { get; set; }
schreiben. Die Eigenschaft "TotalPurchases" benutzt man immer schon mit cust1.TotalPurchases.
MVP Data Platform Development My blog- Als Antwort vorgeschlagen Horizon_Net Donnerstag, 1. Dezember 2011 16:19
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 7. Dezember 2011 13:06
-
Hallo Bruce,
bezieht sich Deine Frage auf den Zugriff auf die Properties? Auf Properties greifst Du prinzipiell genau so zu, als wären es Fields / variablen.
Also bezüglich des Zugriffs sind die beiden Definitionen identisch:
public double TotalPurchases { get; set; }
public double TotalPurchases;Der Zugriff erfolgt z.B. über ein
cust1.TotalPurchases += 499.99;
und es gibt keinen sichtbaren Funktionsaufruf im Code.Lediglich intern kommen die großen Unterschiede zum tragen. Aber das macht der Compiler alles für Dich. So wird bei Properties immer Code aufgerufen was bei einfachen Variablen nicht der Fall ist.
Ist halt eine einache Vereinfachung. Ein Vergleich zeigt dies auch schnell. Stell Dir vor, man müsste sowas schreiben:
cust1.TotalPurchases.Set(cust1.TotalPurchases.Get() + 499.99); // Das ist natürlich Unsinn!Aber sowas hättest Du erwartet, wenn ich Dich recht verstanden habe.
Generell haben die Entwickler ein sehr großes Interesse, den Code so einfach wie möglich zu machen. Je komplexer der Code wird, desto schwerer ist er zu verstehen.
Mit den besten Grüßen,
Konrad
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 7. Dezember 2011 13:06
Alle Antworten
-
Der C# Compiler nimmt dir einfach die Arbeit ab, das private Feld, auf das getter und setter zugreifen, selbst anlegen zu müssen, d.h. statt
private double totalPurchases;
public double TotalPurchases {
get { return totalPurchases; }
set { totalPurchases = value; }
}
muss man nur nur noch
public double TotalPurchases { get; set; }
schreiben. Die Eigenschaft "TotalPurchases" benutzt man immer schon mit cust1.TotalPurchases.
MVP Data Platform Development My blog- Als Antwort vorgeschlagen Horizon_Net Donnerstag, 1. Dezember 2011 16:19
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 7. Dezember 2011 13:06
-
Hallo Bruce,
bezieht sich Deine Frage auf den Zugriff auf die Properties? Auf Properties greifst Du prinzipiell genau so zu, als wären es Fields / variablen.
Also bezüglich des Zugriffs sind die beiden Definitionen identisch:
public double TotalPurchases { get; set; }
public double TotalPurchases;Der Zugriff erfolgt z.B. über ein
cust1.TotalPurchases += 499.99;
und es gibt keinen sichtbaren Funktionsaufruf im Code.Lediglich intern kommen die großen Unterschiede zum tragen. Aber das macht der Compiler alles für Dich. So wird bei Properties immer Code aufgerufen was bei einfachen Variablen nicht der Fall ist.
Ist halt eine einache Vereinfachung. Ein Vergleich zeigt dies auch schnell. Stell Dir vor, man müsste sowas schreiben:
cust1.TotalPurchases.Set(cust1.TotalPurchases.Get() + 499.99); // Das ist natürlich Unsinn!Aber sowas hättest Du erwartet, wenn ich Dich recht verstanden habe.
Generell haben die Entwickler ein sehr großes Interesse, den Code so einfach wie möglich zu machen. Je komplexer der Code wird, desto schwerer ist er zu verstehen.
Mit den besten Grüßen,
Konrad
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 7. Dezember 2011 13:06