get set



  • Hallo,

    float tension = 1;  // kann ich das hier weglassen und nur 
                                // mit Tension arbeiten ?
            public float Tension
            {
    
                get { return tension; }  // also hier dann return Tension  
                set
                {
                    if (value < 0) return;
    
                    tension = value;
    
                    Refresh();
                }
            }
    


  • Den Member kannst Du nur weglassen wenn Du "Auto Implemented Properties" hast:
    http://msdn.microsoft.com/en-us/library/bb384054.aspx

    Edit:
    Anmerkung zur 2. Frage:

    get { return tension; }  // also hier dann return Tension
    

    Das würde zu einem Stackoverflow führen, da der getter dann rekursiv aufgerufen wird.



  • stimmt. Da geht dann gar nix mehr 🙂



  • das große Tension ist das überhaupt eine Eigenschaft oder mehr eine Methode ?



  • Es ist eine Eigenschaft.



  • Ein Property an sich ist genau genommen je nachdem ob Getter und Setter existieren ein bzw. 2 Methoden.

    Der Setter wäre die Methode zum setzen des Wertes im privaten Feld und der Getter wäre die Methode zum Abrufen des Wertes im privaten Feld.

    Genauso gut könnte man schreiben:

    private object _myObject;
    
    public void SetMyObject(object value)
    {
       _myObject = value;
    }
    
    public object GetMyObject()
    {
       return _myObject;
    }
    


  • Für die nächste Version von C# wünsche ich mir sowas:

    public float Tension
            {
                get { return internal; }  //wäre überflüssig in dem Fall
                set
                {
                    if (value < 0) return;
    
                    internal = value;
    
                    Refresh();
                }
            }
    

    Und Zugriff (innerhalb der Klasse) auf das implizit erzeugte Feld über Tension.internal.

    Das wäre fein.



  • Wunschliste schrieb:

    Für die nächste Version von C# wünsche ich mir sowas:

    public float Tension
            {
                get { return internal; }  //wäre überflüssig in dem Fall
                set
                {
                    if (value < 0) return;
    
                    internal = value;
    
                    Refresh();
                }
            }
    

    Und Zugriff (innerhalb der Klasse) auf das implizit erzeugte Feld über Tension.internal.

    Das wäre fein.

    Die Sprache komplizierter machen, damit man sich zwei Zeilen pro Property spart (bei Properties die sowieso schon einen nicht-trivialen getter oder setter haben)?

    Mal kurz überlegen..... hmmmm.... nö. Ganz schlechte Idee.



  • @hustbaer
    Das extra Feld hinter einem Property stört mich auch oft.
    Und C# ist sowieso eine sich stark entwickelnde Sprache.


Anmelden zum Antworten