您可以定义自己的委托params string[]
论证,像这样:
delegate TOut ParamsFunc<TIn, TOut>(params TIn[] args);
并像这样声明你的字典:
Dictionary<string, ParamsFunc<string, string>> functions;
所以,你可以这样使用它:
public static string Concat(string[] args)
{
return string.Concat(args);
}
var functions = new Dictionary<string, ParamsFunc<string, string>>();
functions.Add("concat", Concat);
var concat = functions["concat"];
Console.WriteLine(concat()); //Output: ""
Console.WriteLine(concat("A")); //Output: "A"
Console.WriteLine(concat("A", "B")); //Output: "AB"
Console.WriteLine(concat(new string[] { "A", "B", "C" })); //Output: "ABC"
请注意,您仍然需要使用string[]
论点,即使你只需要一个string
范围。
另一方面,可以使用以下方式调用params
风格(如concat()
or concat("A", "B")
).