Environment.GetCommandLineArgs - warum ist das eine Methode? Warum nicht eine Eigenschaft?

8

Ich versuche, die Entwurfsüberlegungen des Teams zu verstehen, das die Methode erstellt hat Environment.GetCommandLineArgs .

Es könnte eine statische Eigenschaft sein, sehr ähnlich wie System.Web.HttpContext.Current . Immerhin sollte sich der zurückgegebene Wert nicht ändern, sobald er verfügbar ist. Es ist also eher eine Eigenschaft des laufenden Prozesses.

Ich weiß, dass jede Eigenschaft in .NET ein syntaktischer Zucker für Getter / Setter-Methoden ist. Aber das ist der genaue Grund für die Verwendung einer Eigenschaft anstelle einer expliziten Getter-Methode.

Oder gibt es da vielleicht etwas, was mir hier fehlt?

Was denkst du?

    
Ron Klein 08.03.2012, 08:19
quelle

2 Antworten

4

Ich nehme an, es liegt daran, dass es jedes Mal eine Kopie des Arrays erstellt, wenn Sie es aufrufen. Betrachten Sie zum Beispiel dieses Programm:

%Vor%

Wenn Sie dies mit "Original testen" ausführen, wird immer noch "Original" ausgedruckt.

Also wenn du sagst:

  

Immerhin sollte sich der zurückgegebene Wert nicht ändern, sobald er verfügbar ist.

Tatsächlich wird bei jedem Aufruf ein anderer Wert (eine neue Array-Referenz) zurückgegeben, weil Arrays immer veränderbar sind.

    
Jon Skeet 08.03.2012, 08:25
quelle
0

Nach meinem Verständnis werden Methoden für Aktionen verwendet (etwas tun). Wenn Sie also eine Methode aufrufen, werden Sie eine große Logik durchlaufen, wie eine Berechnung oder ein Aufruf an ein Datenbank-Repository. Und Eigenschaften sind im Grunde nur zum Abrufen oder Einstellen von Variablen. Wenn Sie den Namen einer Person haben wollen, haben Sie eine Eigenschaft 'Name' und nennen sie wie person.Name und nicht person.Name (). Aber wenn Sie das Alter der Person haben möchten und Sie nur das Geburtsjahr haben, haben Sie wahrscheinlich eine Methode GetAge () mit grundlegender Logik für die Berechnung des Alters. Vielleicht liege ich hier völlig falsch, aber mein Verständnis ist, dass Methoden für größere Teile von Code und Logik verwendet werden, während Eigenschaften für (mehr) einfaches Festlegen und Abrufen von Werten verwendet werden.

    
Abbas 08.03.2012 08:29
quelle