2014-11-24 18 views
5

Jeder so oft (zB NUnit TestCaseData ist), sehe ich ein Objekt, das ein oder mehrere Konstrukteure hat wie folgt:Warum haben Params und Muti-Objekt Konstruktoren?

MyObject(object arg) 
MyObject(object arg1, object arg2) 
MyObject(object arg1, object arg2, object arg3) 
//guess they got tired of writing constructors? 
MyObject(params object[] args) 

Wenn ein Objekt den params Konstruktor hat, obwohl, was der Vorteil ist es, die früheren definieren ?

+1

Nur ein Vorteil gegenüber dem vorherigen ist, dass Sie diesen Parametern nichts anderes als Standardwerte zuweisen können. –

+0

Ich habe das gleiche mit 'string.Format' gesehen, meine reine Vermutung ist, dass es eine Art von Optimierungen ist (um zu vermeiden, schwere' params' für nur wenige Parameter zu verwenden). – Sinatr

+0

Amol: Nicht der einzige Grund, aber immer noch ein +1 wert. – Arithmomaniac

Antwort

6

Es ist typisch für die Leistung.

In Ihrem Beispiel ist es wahrscheinlich der Fall, dass MyObject ist zuordnet mit 1, 2 oder 3 Parametern, und deshalb hat der Entwickler für diese optimiert. Zum einen kann die zugrundeliegende Implementierung optimiert werden, und zum anderen können die Parameter an der Aufrufstelle ohne zusätzliche Speicherzuteilung übergeben werden. Mit einem params muss der Compiler Code einfügen, um ein Array zu erstellen und dann die Parameter in diesem Array vor dem Aufruf zuweisen. Wenn es üblich ist, mit 1, 2 oder 3 Parametern aufzurufen, können Sie diese Zuordnung vermeiden.

Verwandte Themen