Autor Beitrag
NeulingMitFragen()
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 08.08.13 12:47 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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() Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 08.08.13 13:19 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 user profile iconTh69 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)

Für diesen Beitrag haben gedankt: NeulingMitFragen()
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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).

Für diesen Beitrag haben gedankt: NeulingMitFragen()
NeulingMitFragen() Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 08.08.13 18:25 
vielen Dank euch beiden! Jetzt wird mir einiges klarer.
Mfg :)
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Fr 16.08.13 13:24 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden C#-Quelltext
1:
public int EineZahlAlsProperty {get;set}