问题 C#Func委托与params类型


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

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

我尝试了一个类型的参数 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


9883
2018-06-08 13:48


起源

什么是错误消息? - Ando
@Ando:它用红色突出显示了这么多代码,而不仅仅是我所拥有的代码 Func 参数,我甚至无法告诉你它发现的所有错误。 - Sarah Vessels


答案:


Jon Skeet的回答 至 这个问题 让我尝试以下,这有效:

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

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

11
2018-06-08 14:01





你不能拥有 params 在代表声明中。但是,您可以使用单个阵列,这可以满足您的需求: Func<XmlDocument, XmlNode[], XmlNode>


5
2018-06-08 13:54





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


0
2018-06-08 13:54