In C# vorbei, kann man das params
Schlüsselwort verwenden, um eine beliebige Anzahl von typisierte Parameter an eine Methode definieren:Elegantly Listen und Objekte als params
public void DoStuff(params Foo[] foos) {...}
public void OtherStuff {
DoStuff(foo1);
DoStuff(foo2, foo3);
}
Wenn Sie bereits eine Liste von Objekten haben, können Sie drehen es in ein Array, um diese Methode zu übergeben:
DoStuff(fooList.ToArray());
Gibt es jedoch eine elegante Möglichkeit zum Mix-n-Match? Das heißt, mehrere Objekte und Listen von Objekten zu übergeben und die Ergebnisse für Sie in eine Liste oder ein Array zu verflachen? Im Idealfall würde ich so meine Methode können gerne anrufen:
DoStuff(fooList, foo1, foo2, anotherFooList, ...);
Ab jetzt, ich der einzige Weg, weiß, wie dies zu tun ist, alles in eine Liste zu-Prozesses vor, und ich don‘ Ich kenne keine Möglichkeit, dies generisch zu tun.
Edit: klar sein, ich bin nicht mit dem Stichwort params
verheiratet, es ist nur ein verwandter Mechanismus, der half mir erklären, was ich tun wollte. Ich bin ziemlich glücklich mit jeder Lösung, die sauber aussieht und alles in einer einzigen Liste abbildet.
nicht 'params' verwenden, außer es wird wirklich benötigt. –
Ich hoffe, es gibt keine Möglichkeit zu kombinieren. Wie würde der Compiler wissen, ob Sie ein Objekt, das ein Array von Objekten war, abflachen wollten? Sollte es eine Reihe von Arrays von Objekten abflachen? Wie könnte es sich entscheiden, wann und wo nicht? –
Ich bin nicht ganz klar, was Ihr Ziel oder Ihre Motivation ist, aber die Dokumentation für _params_ http://msdn.microsoft.com/en-us/library/w5zay9db.aspx zeigt die Verwendung eines Arrays vom Typ _object_ als in 'public static void UseParams2 (params object [] Liste)' –