Entwickler-Ecke
C# - Die Sprache - Property vs. Method
Delete - So 15.08.10 13:31
Titel: Property vs. Method
Ich stehe immer wieder vor der Entscheidung Eigenschaft vs. Methode und habe eigentlich keine Entscheidungsgrundlage die man dafür anwenden sollte.
Nehmen wir an eine Klasse A speichert einen String. Zusätzlich soll man einen String abfragen können, welcher den Wert des ersten String ohne alle Buchstaben 'a' wiedergibt. (Nicht das Beste Beispiel aber ich denke ausreichend.)
Zwei Möglichkeiten ...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| class A : System.Object { public virtual System.String S { get; set; }
public virtual System.String SReduced { get { return this.S.Replace("a", System.String.Empty); } }
public virtual System.String GetSReduced( ) { return this.S.Replace("a", System.String.Empty); } } |
SReduced und GetSReduced sind im Prinzip gleich. Eine Methode wird unausweichlich, wenn man noch einen Parameter zur Ermittlung eines Funktionswertes braucht. Aber so ...
Also wenn es einen Entscheidungsstandard gibt, dann interessiert er mich.
Delete - So 15.08.10 22:28
Ok. ^^ Danke. Eigentlich völlig logisch.
Kha hat folgendes geschrieben : |
PS: Was mir an deinen Quelltexten aufgefallen ist: Wozu so oft virtual? |
Ich will eine saubere Vererbung gewährleisten, denn ich lege wirklich großen Wert darauf, dass ich den Member der tatsächlichen Klasse einer Instanz aufrufe. Daher habe ich mir grundsätzlich angewöhnt virtuell zu implementieren.
Der WebClient und HttpWebRequest waren für mich nicht ausreichend. Jetzt arbeite ich an einem TcpClient, der Requests verschiedener Anwendungsschichten (HTTP, SMTP, etc.) in einem Request-Stack aufnimmt und diese je nach Request-Priorität abarbeitet. Bezogen auf den Stack arbeite ich immer mit dem Interface bzw. der abstrakten Basisklasse für TcpClient-Plugins. hier geht es ohne Virtualität nicht.
(P.S.: Mir ist klar, das interface-Member und abstrakte Member implizit virtuell sind.)
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!