Frage

Sie Standardparameter für Methoden Encapsulation verletzen?

Was war der Grund hinter nicht Standardparametern in C # Bereitstellung?

War es hilfreich?

Lösung

Ich würde diese als „official "beantwortet von Microsoft. Allerdings default (und Namen) Parameter wird auf jeden Fall in C # 4.0 zur Verfügung.

Andere Tipps

Nein, es hat keinen Einfluss auf Verkapselung in keiner Weise. Es ist einfach nicht oft notwendig. Oft eine Überlastung zu schaffen, die weniger Argumente ist eine flexiblere und sauberere Lösung nimmt, so C # 's Designer einfach nicht einen Grund zu sehen, die Komplexität des Standardparameters die Sprache hinzuzufügen.

Hinzufügen „Eine andere Möglichkeit, das Gleiche zu tun“ ist immer ein Kompromiss. In manchen Fällen kann es zweckmäßig sein. Aber je mehr Syntax Sie legal machen, desto komplexer wird die Sprache zu lernen, und desto mehr kann man sich in der Wand, zukünftige Erweiterung zu verhindern. (Vielleicht hatte sie einen Tag mit einer anderen Erweiterung der Sprache kommen, die eine ähnliche Syntax verwendet. Dann das wäre unmöglich zu schreiben, weil es mit dem Merkmale in Konflikt geraten würde sie früher hinzugefügt)

Wie bereits erwähnt, Standardparameter waren nicht priorisierte Funktion, ist aber wahrscheinlich, C # 4.0 hinzugefügt werden in. Aber ich glaube, früher gab es es gute Gründe, nicht zu enthalten (in 4,0, wie ich es verstanden habe, ITAS meist zu unterstützen Ente eingeben Arten der Programmierung, wo Standardparameter Typ Kompatibilität erhöht).

Ich glaube, übermäßige Parameterlisten (sicherlich mehr als 4-5 verschiedene Parameter) ist ein Code Geruch rel="nofollow . Standardparameter sind nicht böse in sich selbst, sondern riskieren schlechtes Design zu fördern, in mehr Objekte das Refactoring zu verzögern.

Um Ihre erste Frage - nein, es ist genau das gleiche wie mehrere überladenen Konstruktoren bieten. Was die zweite, konnte ich nicht sagen.

Standardparameter werden eingeschlossen in C # 4.0

Einige Lesematerial über sie:

klicken

klicken

Es scheint auch, dass der Autor von dieser Beitrag einen Artikel in naher Zukunft auf dem‚warum‘wird MS veröffentlichen wählt Standard Parameter in C # implementieren

Hier ist eine Antwort, warum es nicht in C # zur Verfügung gestellt http://blogs.msdn.com/csharpfaq/archive/ 2004/03/07 / 85556.aspx

Ein Nachteil bei der Standard-Parametern Implementierung in C # 4.0 ist, dass es eine Abhängigkeit von dem Parameter Namen erstellt. Diese bereits in VB existiert, was ein Grund sein könnte, warum sie wählten sie in 4.0 zu implementieren.

Ein weiterer Nachteil besteht darin, dass der Standardwert hängt davon ab, wie Sie Ihr Objekt geworfen. Sie können darüber lesen Sie hier: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/optional-parameters-conclusion-treat-like-unsafe/216.html .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top