Entwickler-Ecke
C# - Die Sprache - C# Properties
NeulingMitFragen() - Do 08.08.13 12:47
Titel: C# Properties
Hallo,
ich bin verzweifelt am C# lernen. Die grundsachen kann ich jedoch bereitet mir das wichtigste (Die OOP) schwierigkeiten. Ich versuch mich verzweift durch Methoden und Klassen durchzuwüllen und deren eigentlichen sein zu verstehen. Da ich zusätzlich zu Büchern noch mit Youtube- Video lerne (die auf englisch sind. Sind die einzigen guten :/) verstehe ich eine Sache nicht so ganz. Wozu benutz man in C# die Properties? Ich sehe keinen sinn sie zu benutzen und jedesmal einen getter und setter hinzuschreiben. Könnte mir jemand das bitte erläutern?
Mfg
Ralf Jansen - Do 08.08.13 13:07
Du mußt nicht beides hinschreiben es kann auch nur eins von beiden sein und beides kann unterschiedliche Sichtbarkeiten haben. Häufig z.b. ein public get aber ein private/internal oder was auch immer set.
Wo fehlt dir der Sinn? Im Vergleich zu Feldern oder im Vergleich zu ausprogrammierten Get bzw. Set Methoden?
NeulingMitFragen() - Do 08.08.13 13:19
Ralf Jansen hat folgendes geschrieben : |
Du mußt nicht beides hinschreiben es kann auch nur eins von beiden sein und beides kann unterschiedliche Sichtbarkeiten haben. Häufig z.b. ein public get aber ein private/internal oder was auch immer set.
Wo fehlt dir der Sinn? Im Vergleich zu Feldern oder im Vergleich zu ausprogrammierten Get bzw. Set Methoden? |
Hallo,
ich glaube ich habe immernoch nicht den Sinn von Get und Set verstanden.
Ralf Jansen - Do 08.08.13 13:24
Zitat: |
ich glaube ich habe immernoch nicht den Sinn von Get und Set verstanden. |
Da würde ich dich dann jetzt, so wie gestern
Th69 auch, an ein gutes Buch oder sonstige Grundlagenquelle verweisen. Da wird der Sinn erklärt bzw. sollte.
Wenn es darüber hinaus dann noch Probleme gibt zu verstehen wann man die, anstatt anderer Möglichkeiten, einsetzt können wir gern weiterhelfen.
Hidden - Do 08.08.13 13:32
Hallo,
ich bin zwar kein C#-ler, aber grundsätzlich verhält es sich mit properties in der OOP so:
Der Zugriff auf Felder (d.h. auf Variablen, die zu einem Objekt gehören) sollte niemals direkt erfolgen; eine property ist eine Möglichkeit, diesen zu kapseln.
Oftmals willst du in ein bestehendes Programm einbauen, dass wenn die Feldvariable FFeld von außen verändert wird, das Objekt zu dem diese gehört auf bestimmte weise darauf reagiert.
Erfolgt der Zugriff über eine property, so hast du dabei leichtes Spiel: Einfach den Setter anpassen. Bei direktem Zugriff müsstest du nun jede Stelle im Quelltext suchen und verändern, an der ein Zugriff erfolgt.
Ein Unterschied in der Handhabung in den meißten mir bekannten Sprachen ist, dass eine property nicht als var-Parameter an eine Methode übergeben werden kann. Abgesehen von dieser Feinheit wäre es möglich, die property nachträglich einzuführen und bis dahin direkt auf die Feldvariable zuzugreifen -- das gilt aber als schlechter Stil.
Grüße,
Daniel
Ralf Jansen - Do 08.08.13 13:39
Zitat: |
Abgesehen von dieser Feinheit wäre es möglich, die property nachträglich einzuführen und bis dahin direkt auf die Feldvariable zuzugreifen -- das gilt aber als schlechter Stil.
|
Und verhalten sich ja auch nicht gleich sondern nur ähnlich. Feld nach Property oder umgekehrt ist ein Breaking Change der mit hoher Wahrscheinlichkeit irgendwas kaputt macht (und das vielfach auch noch unbemerkt ohne offensichtliche Auswirkung).
NeulingMitFragen() - Do 08.08.13 18:25
vielen Dank euch beiden! Jetzt wird mir einiges klarer.
Mfg :)
UGrohne - Fr 16.08.13 13:24
Ralf Jansen hat folgendes geschrieben : |
Zitat: | Abgesehen von dieser Feinheit wäre es möglich, die property nachträglich einzuführen und bis dahin direkt auf die Feldvariable zuzugreifen -- das gilt aber als schlechter Stil.
|
Und verhalten sich ja auch nicht gleich sondern nur ähnlich. Feld nach Property oder umgekehrt ist ein Breaking Change der mit hoher Wahrscheinlichkeit irgendwas kaputt macht (und das vielfach auch noch unbemerkt ohne offensichtliche Auswirkung). |
Und deswegen am besten gleich als Auto-Implemented Property deklarieren, dann ist es bereits ein Property, sieht aber fast nicht so aus, kann aber später als solches mit eigenem Code angereichert werden:
C#-Quelltext
1:
| public int EineZahlAlsProperty {get;set} |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!