Sie können die bestehenden Action
Delegierten mit params
verwenden, aber Sie können Ihre eigenen Delegierten auf diese Weise erklären:
public delegate void ParamsAction(params object[] arguments)
Dann:
// Note that this doesn't have to have params, but it can do
public void Foo(object[] args)
{
// Whatever
}
...
ParamsAction action = Foo;
action("a", 10, 20, "b");
Natürlich Sie können ein erstellen Action<object[]>
für Ihre bestehende Methode - aber Sie verlieren den params
Aspekt davon, wie das in Action<T>
nicht erklärt wird. So zum Beispiel:
public static void Foo(params object[] x)
{
}
...
Action<object[]> func = Foo;
func("a", 10, 20, "b"); // Invalid
func(new object[] { "a", 10, 20, "b" }); // Valid
Also, wenn du bist der Delegierte aus dem Code aufrufen, die params
nutzen will, müssen Sie eine Art delegieren, die das (nach dem ersten Teil) enthält in der Erklärung. Wenn Sie nur einen Delegaten erstellen möchten, der eine object[]
akzeptiert, dann können Sie eine Instanz von Action<object[]>
mit einer Methode erstellen, die params
in seiner Signatur hat - es ist nur ein Modifikator, effektiv.
Nein, komischerweise das war vor einer halben Stunde diskutiert! http://StackOverflow.com/a/25689676/1663001 – DavidG
http://StackOverflow.com/Questions/4059624/can-i-use-Params-in-Action-Funktionen –