C# C将数组作为参数传递?

C# C将数组作为参数传递?,c#,linq-to-xml,dynamic-arrays,C#,Linq To Xml,Dynamic Arrays,我试图理解将数组参数传递给方法以及用C创建动态数组。最后我有两个问题。 此LINQ to XML语句运行良好: XDocument doc = new XDocument( new XElement("Processes", from p in Process.GetProcesses() orderby p.ProcessName select (new XElement("Process",

我试图理解将数组参数传递给方法以及用C创建动态数组。最后我有两个问题。

此LINQ to XML语句运行良好:

XDocument doc = new XDocument(
    new XElement("Processes",
            from p in Process.GetProcesses()
            orderby p.ProcessName
            select (new XElement("Process", 
                        new XAttribute("Name", p.ProcessName), 
                        new XAttribute("PID", p.Id)))));
我想用另一种方式重写它,以理解传递数组的概念,但它在最后一行生成了InvalidOperationException:

var query = from p in Process.GetProcesses()
            orderby p.ProcessName
            select p;

List<XElement> content = new List<XElement>();
foreach (var item in query)
{
    content.Add(new XElement("Process",
        new XAttribute("Name", item.ProcessName),
        new XAttribute("PID", item.Id)));
}

// Is there any other way to create dynamic array instead of using List 
// and converting it to Array?
var paramArr = content.ToArray();
XDocument doc = new XDocument(paramArr);
我有两个问题:

我应该如何将数组参数传递给此方法或类似方法:public XDocumentparams Object[]content

是否有其他方法可以在C中创建动态数组而不使用列表和强制转换到数组


关于你的第一个问题,请看一看。 . 我认为通过将数组强制转换为对象可以解决您的问题:

XDocument doc = new XDocument((object)paramArr);

第二个问题:不是。C中的数组具有恒定的长度。

对于第一个问题,请查看。 . 我认为通过将数组强制转换为对象可以解决您的问题:

XDocument doc = new XDocument((object)paramArr);

第二个问题:不是。C中的数组具有恒定的长度。

您的第二个代码将一个元素进程放入XDocument,但第二个代码将许多元素放入XDocument。XDocument可以包含零个或一个元素

例如:

var query = from p in Process.GetProcesses()
            orderby p.ProcessName
            select p;

List<XElement> content = new List<XElement>();
foreach (var item in query)
{
    content.Add(new XElement("Process",
        new XAttribute("Name", item.ProcessName),
        new XAttribute("PID", item.Id)));
}

var paramArr = content.ToArray();
var rootElement = new XElement("Processes", paramArr); // create one root element
XDocument doc = new XDocument(rootElement);

中的第二个示例放置了一个元素和一个注释,而不是两个元素。

您的第二个代码将一个元素处理到XDocument中,但第二个代码放置了许多元素。XDocument可以包含零个或一个元素

例如:

var query = from p in Process.GetProcesses()
            orderby p.ProcessName
            select p;

List<XElement> content = new List<XElement>();
foreach (var item in query)
{
    content.Add(new XElement("Process",
        new XAttribute("Name", item.ProcessName),
        new XAttribute("PID", item.Id)));
}

var paramArr = content.ToArray();
var rootElement = new XElement("Processes", paramArr); // create one root element
XDocument doc = new XDocument(rootElement);

中的第二个示例包含一个元素和一条注释,而不是两个元素。

请查看msdn中的示例:但它在最后一行生成异常哪个异常?异常有帮助我们帮助您的消息。@YAT我已经检查了这些示例。但在第一个示例中,它使用静态元素,第二个与我的第一个语句相同。如何使用动态数组更改此链接的第一个示例?@DasKrümelmonster我在帖子中添加了异常类型。请查看msdn中的示例:但它在最后一行生成了一个异常哪个异常?异常有帮助我们帮助您的消息。@YAT我已经检查了这些示例。但在第一个示例中,它使用静态元素,第二个与我的第一个语句相同。如何使用动态数组更改此链接的第一个示例?@DasKrümelmonster我在帖子中添加了异常类型。感谢提供文档链接。这里很好地解释了动态数组。感谢提供文档链接。动态数组在这里解释得很好。好的,我得到了错误!实际上,这不是因为paramArr,而是因为XML结构。谢谢好的,我弄错了!实际上,这不是因为paramArr,而是因为XML结构。谢谢