C#Func委托与params类型

时间:2010-06-08 13:48:26

标签: c# parameters delegates lambda

在C#中,我是否有Func参数表示具有此签名的方法?

XmlNode createSection(XmlDocument doc, params XmlNode[] childNodes)

我尝试使用Func<XmlDocument, params XmlNode[], XmlNode>类型的参数,但是,哦,ReSharper / Visual Studio 2008会疯狂地用红色突出显示。

更新:好吧,谷歌搜索'c#params func'没有产生任何结果,但是'c#params delegate'把我带到了this question。按照Jon Skeet在那里的回答,看起来我可以创建一个delegate,比如说Foo,然后我没有为Func<XmlDocument, params XmlNode[], XmlNode>类型的方法设置参数,而是参数为输入Foo

3 个答案:

答案 0 :(得分:11)

Jon Skeet's answerthis other question让我尝试以下操作:

protected delegate XmlNode CreateSection(XmlDocument doc,
    params XmlNode[] childNodes);

protected static void createOrUpdateSettingTree(XmlNode rootNode,
    XmlDocument doc, CreateSection createSection) { ... }

答案 1 :(得分:5)

您不能在委托声明中拥有params。但是,您可以使用单个数组,这可以满足您的需求:Func<XmlDocument, XmlNode[], XmlNode>

答案 2 :(得分:0)

我建议在这种情况下不允许'params'。