C#Func委托与params类型

Sar*_*els 11 c# parameters lambda delegates

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

XmlNode createSection(XmlDocument doc, params XmlNode[] childNodes)
Run Code Online (Sandbox Code Playgroud)

我尝试了一个类型的参数,Func<XmlDocument, params XmlNode[], XmlNode>但是,哦,ReSharper/Visual Studio 2008疯狂突出显示红色.

更新: 好的,谷歌搜索'c#params func'没有产生任何结果,但'c#params delegate'让我想到了这个问题.按照Jon Skeet在那里的回答,看起来似乎我可以创建一个delegate,比方说Foo,然后不是在我的类型方法中有一个参数Func<XmlDocument, params XmlNode[], XmlNode>,我接受一个类型的参数Foo.

Sar*_*els 11

Jon Skeet这个问题的回答让我尝试了以下方法:

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

protected static void createOrUpdateSettingTree(XmlNode rootNode,
    XmlDocument doc, CreateSection createSection) { ... }
Run Code Online (Sandbox Code Playgroud)


Ste*_*ary 5

您不能拥有params委托声明.但是,您可以使用一个阵列,它可以满足您的需求:Func<XmlDocument, XmlNode[], XmlNode>.