【问题标题】:C# Func delegate with params type具有参数类型的 C# Func 委托
【发布时间】:2010-06-08 13:48:26
【问题描述】:

在 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 类型的参数。

【问题讨论】:

  • @Ando:它用红色突出显示了很多代码,而不仅仅是我有 Func 参数的那一行,我什至无法告诉你它发现的所有错误。

标签: c# parameters delegates lambda


【解决方案1】:

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) { ... }

【讨论】:

    【解决方案2】:

    您不能在委托声明中包含params。但是,您可以采用单个数组,这将满足您的需要:Func<XmlDocument, XmlNode[], XmlNode>

    【讨论】:

      【解决方案3】:

      我建议在这种情况下不允许使用“参数”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多