MidnightRun Geschrieben 5. Februar 2009 Geschrieben 5. Februar 2009 Hallo, ich habe gestern Erfahren, dass man seine Felder (Variabeln in Klassen, bzw Eigenschaften). Am besten private deklariert. Also natürlich nicht alle sonder, z.B. Variabeln die wenn sie geändert werden, auch eine andere Variabel synchron mitlaufen muss. Z.B. hat man ein Programm was den Preis des Brotes berechnet und wenn sie die Anzahl der Brote ändert muss sich damit auch mit der Preis ändern =D Nun hat C# ja die tollen Eigenschafte, auch Akzessoren genannt, get & set. Code private int anzahlBrote; private int brotePreis; public const int brotKosten; public int AnzahlBrote { get { return anzahlBrote; } set { anzahlBrote = AnzahlBrote; brotPreis = anzahlBrote * broteKosten; } } Wie ich nun das Verstanden habe ist das so, dass die Eigenschaften eine spezielle Methode sind, sprich wenn im Programm eine Instanz meiner Klasse Namens broteRechnung existiert : brotRechnung.AnzahlBrote = 10; wird der set-er aufgerufen und führt die 2 Anweisungen durch. Richtig ? Also die Akzessoren sind nur Methoden, die eine oder mehrere Anweisungen durchführen. Nun habe ich aber einen Programmcode gesehen, da stand nur eine Eigenschaft, aber keine Deklaration eines pirvaten Feldes. public int AnzahlBrote {get; private set;} naja, dass private set; sagt dass diese Eigenschaft nur in der Klasse selbst gesetzt werden darf. Aber es ist doch nur die spezielle Methode. Ich meine es wird nirgends in der Klasse gesagt private int anzahlBrote; Dann müsste da doch keine Variabel sein ? Aber es werden Werte gespeichert in diese Methode und sie wird wie eine Variabel im Programm gehandelt :confused: Kann da jemand Licht ins Dunkel bringen ? Ausserdem habe ich gelesen, dass wenn man Felder oder Methoden als private deklariert, sie nun innerhalb des Objektes eingesetzt werden können, das ist verständlich. Instanzen anderer Klassen, können nichts sehen, aber Instanzen, der selben Klasse können die Felder und Methoden sehen :confused: Heißt das wenn ich eine Klasse "goodMorningVietnam" habe und 2 Instanzen, das die eine sagen kann instanz2.instanz1.privatesFeld ? Mfg Zitieren
TDM Geschrieben 5. Februar 2009 Geschrieben 5. Februar 2009 Nun habe ich aber einen Programmcode gesehen, da stand nur eine Eigenschaft, aber keine Deklaration eines pirvaten Feldes. public int AnzahlBrote {get; private set;} naja, dass private set; sagt dass diese Eigenschaft nur in der Klasse selbst gesetzt werden darf. Aber es ist doch nur die spezielle Methode. Ich meine es wird nirgends in der Klasse gesagt private int anzahlBrote; Dann müsste da doch keine Variabel sein ? Aber es werden Werte gespeichert in diese Methode und sie wird wie eine Variabel im Programm gehandelt :confused: Kann da jemand Licht ins Dunkel bringen ? Das ist ein C# 3.0 Feature. Ausserdem habe ich gelesen, dass wenn man Felder oder Methoden als private deklariert, sie nun innerhalb des Objektes eingesetzt werden können, das ist verständlich. Instanzen anderer Klassen, können nichts sehen, aber Instanzen, der selben Klasse können die Felder und Methoden sehen :confused: Heißt das wenn ich eine Klasse "goodMorningVietnam" habe und 2 Instanzen, das die eine sagen kann instanz2.instanz1.privatesFeld ? Ja, lohnt sich z.B. bei sowas wie Clone. Zitieren
MidnightRun Geschrieben 5. Februar 2009 Autor Geschrieben 5. Februar 2009 Danke, für die Seite Könntest du mir mal das mit dem Clone erklären ? Verstehe das nicht so =D Mfg Zitieren
TDM Geschrieben 5. Februar 2009 Geschrieben 5. Februar 2009 Na sowas z.B.: public class FooBar : ICloneable { public int Count { get; private set; } #region ICloneable Members public object Clone() { FooBar fooBar = new FooBar(); fooBar.Count = this.Count; return fooBar; } #endregion } Zitieren
MidnightRun Geschrieben 5. Februar 2009 Autor Geschrieben 5. Februar 2009 Na sowas z.B.: public class FooBar : ICloneable { public int Count { get; private set; } #region ICloneable Members public object Clone() { FooBar fooBar = new FooBar(); fooBar.Count = this.Count; return fooBar; } #endregion } Danke, soweit bin ich leider noch nicht Aber kommt alles noch. Mfg :bimei Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.