1

我找到了一个使用 XElement 的示例,其中以这种方式创建对象:

XElement xml = new XElement("contacts",
                    new XElement("contact", 
                        new XAttribute("contactId", "2"),
                        new XElement("firstName", "Barry"),
                        new XElement("lastName", "Gottshall")
                    )
                );

但是只能使用对象数组来创建 XElement 构造

XElement(XName,对象[])

我在这段代码中没有看到任何数组初始化器。它是如何工作的?

4

2 回答 2

2

XElement 构造函数的内容参数定义为params Object[]

public XElement(
    XName name,
    params Object[] content
)

这意味着您可以在此处传递任意数量的任何参数。这正是您发现的示例中发生的情况。

我在这段代码中没有看到任何数组初始化器。它是如何工作的?

数组将由编译器创建。如果你要反汇编你的例子,你会看到

XElement xml = new XElement("contacts",
                    new XElement("contact", new object[] {
                        new XAttribute("contactId", "2"),
                        new XElement("firstName", "Barry"),
                        new XElement("lastName", "Gottshall")
                    })
                );
于 2013-07-08T12:55:00.467 回答
0

我上面的答案解决了这个谜,但我只想提一下,params关键字是一个强大的工具,可以接收来自同一类型的任意数量的参数到一个方法。它必须是方法签名的最后一个参数,string.format例如,我们一直使用它。节省大量时间且易于使用

于 2013-07-08T13:14:15.823 回答