Entwickler-Ecke

C# - Die Sprache - Klassen und Get Set Methoden in C Sharp


DennisXX - Mi 24.08.11 12:33
Titel: Klassen und Get Set Methoden in C Sharp
Hallo zusammen !

Wie kann ich in C Sharp die einzelnen get und set Methoden einer Klassen innerhalb einer anderen Klassen ansprechen und nutzen? Ich verstehe das nicht so ganz. Hier mal ein Stück Code:


C#-Quelltext
1:
2:
3:
4:
5:
6:
class Testklasse
{

    private Button button1 {get; set;}

}


Wie kann ich das jetzt in einer anderen Klasse nutzen?

Grüße
Dennis


Christian S. - Mi 24.08.11 12:44

Zuerst einmal musst du es public machen. Dann kannst Du button1 Werte zuweisen bzw. lesen, als wäre es ein Feld. Hättest Du eine get- und/oder set-Methode definiert, würden die das dann behandeln.


Ralf Jansen - Mi 24.08.11 12:46

Du erzeugst dir in der anderen Klasse ein Instanz dieser Klasse und liest die Property aus, wenn sie denn Public wäre.


C#-Quelltext
1:
2:
3:
4:
5:
Testklasse meineLiebeTestKlasse = new TestKlasse();
Button meinLieberButton = new Button();

meineLiebeTestKlasse.button1 = meinLieberButton; // setter Aufruf
meinLieberButton = meineLiebeTestKlasse.button1; // getter Aufruf


DennisXX - Mi 24.08.11 12:47

Ich will die Werte bzw. das Objekt von Button 1 in einer anderen Klasse auslesen. Dafür sind die get und set Methoden in C Sharp gedacht oder nicht? Und genau jetzt stellt sich die Frage, wie ich in einer anderen Klasse diese Methoden nutzen kann?


DennisXX - Mi 24.08.11 12:54

Ralf ich habe eben mal deinen Code ausprobiert und das funktioniert nicht. Ich sehe auch in meinem Intellisense vom Vsiual Studio nirgends etwas von meinen felder bzw. den Referenzen vom Typ Button usw.

Grüße
Dennis


Ralf Jansen - Mi 24.08.11 13:09

Ich habe den Code angepasst. Dein Naming ist etwas gewöhnungsbedürtig ;)
Hast du deine Property auch von private auf public geändert.


DennisXX - Mi 24.08.11 13:21

Hallo !

Nein die Property sind noch auf Private, aber dass müssen sie doch auch bleiben (trotz entsprechender Get- und Set-Methoden) oder sehe ich das falsch?

Grüße
Dennis


dark-destination1988 - Mi 24.08.11 13:25

nein properties sind immer public sonst sind es keine properties. man muss doch von aussen drauf zugreiffen können


Ralf Jansen - Mi 24.08.11 13:31

Zitat:
oder sehe ich das falsch?


Ja. Vielleicht solltest du erst mal eine normale Property ausprobieren(siehe die Msdn Hilfe [http://msdn.microsoft.com/de-de/library/w86s7x04.aspx]) die noch ein Feld hinter der Property hat. Ein solches Feld sollte damit die Property Sinn macht nicht public sein. Da du gleich eine automatische Property verwendest die das Feld hinter der Property vor dir versteckt scheinst du das durcheinander zu bringen.


Zitat:
nein properties sind immer public sonst sind es keine properties.


Properties können jede Sichtbarkeit haben. Allgemein private macht sicherlich wenig Sinn. Mir fällt zumindest gerade kein vernünftiger Grund ein irgendjemand wird aber sicher einen Anwendungsfall kennen. Protected oder internal wird aber sicherlich häufiger verwendet. Und bei automatischen Properties macht es zum Beispiel häufiger Sinn nur den Setter private zu machen.


dark-destination1988 - Mi 24.08.11 14:17

ja ich meinte auch statt public -->alle anderen ausser private ;)