public string Name { get; set; }



  • Dies ist die Kurzschreibweise für Getter/Setter in C#:

    private string name;
    public string Name { get; set; }
    

    Quelle:
    http://stackoverflow.com/questions/16752577/c-sharp-get-set-shortcut

    Das Posting suggeriert das "name" die private Variable ist, was sie aber nicht ist. Komme ich an die private Variable von "Name" irgendwie ran?



  • Das Posting suggeriert garnichts. Du kommst auch an das private Feld hinter der Property nicht ran. Gibt es auch gar keinen Grund zu.

    Wenn du wirklich das private Feld für irgendetwas brauchst, dann musst du eben die vollständige Schreibweise verwenden.



  • Ok, das wollte ich wissen. Ich benutze sowieso immer die Langschreibweise.



  • abcd schrieb:

    Ok, das wollte ich wissen. Ich benutze sowieso immer die Langschreibweise.

    Wieso?



  • Weil ich es schon immer so gemacht habe.

    Wieso benutz du die Kurzschreibweise? Wenn du Code zum Überprüfen der Daten einfügen willst, dann mußt du doch sowieso die Langschreibweise verwenden. Eigentlich ist doch die Kurzschreibweise viel zu lang.

    Die bessere Kurzschreibweise wäre doch:
    public string name;

    Wenn ich eine Überprüfung hinzufügen will, dann konvertiere ich die Variable in ein Property.



  • Warum nicht einfach immer eine Property erstellen, wenn es public ist?



  • Es ist ein wenig Geschmackssache, aber ich benutze die Kurzschreibweise sehr oft. Folgendes finde ich z.B. auch sehr nützlich:

    public int Test
    {
        get;
        private set; 
    }
    

    So kann ich nur innerhalb der Klasse den Wert setzen, von aussen nur lesen.



  • abcd schrieb:

    Weil ich es schon immer so gemacht habe.

    Wieso benutz du die Kurzschreibweise?

    Weil ich es schon immer so gemacht habe 🤡 😉
    Also ich benutze die Kurzschreibweise, weil sie für den Fall, dass ich einfach eine 0815-Property will... kürzer ist! ^^ Wenn ich die Daten überprüfen muss, dann nehme ich natürlich die Langschreibweise, klar. Aber in den anderen Fällen ist es imo völlig ausreichend, die Kurzschreibweise zu verwenden.

    Die bessere Kurzschreibweise wäre doch:
    public string name;

    Wenn ich eine Überprüfung hinzufügen will, dann konvertiere ich die Variable in ein Property.

    Na ja, Membervariablen public zu haben, ist aus diversen Gründen keine gute Idee. Und die momentane Kurzschreibweise hat eben den Vorteil, dass Sie dir auch die Möglichkeit gibt, den Zugriff über get/set zu steuern, indem man es weglässt oder private/protected etc. macht.



  • Hallo,

    ich bevorzuge da auch eher die Langschreibweise. - Vorallem, weil ich dort die Initialisierung einer Property übersichtlicher finde, als wenn ich dazu erst in den Konstruktor muss.

    Beispiel:

    public class MyController
    {
        public MyModel Model { get; private set; }
    
        public MyController()
        {
            this.Model = new MyModel();
        }
    }
    

    finde ich bei vielen Properties mit eigenen Typen weniger übersichtlich als folgendes:

    public class MyController
    {
       private MyModel _model = new MyModel();
       public MyModel Model
       {
          get { return _model; }
       }
    }
    

    Das ist aber aus meiner Sicht aber dann eher Geschmackssache wie ich finde.


Anmelden zum Antworten