基本上我试图在 C# 中创建一个字符串来函数字典,我已经看到它是这样完成的:
Dictionary<string, Func<string, string>>
但是问题是我想放入字典的函数都有不同数量的不同类型的参数。因此,我该如何制作一本能做到这一点的字典?
亚当
最佳答案
您可以使用 params string[]
参数定义自己的委托(delegate),如下所示:
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()
或 concat("A", "B")
).
关于c# - 字符串函数字典 c#,其中函数具有不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28992411/