C# List.ToArray()-为什么数组为空?

C# List.ToArray()-为什么数组为空?,c#,arrays,list,C#,Arrays,List,我正在编写一个包含集合的可序列化对象。因此,为了能够从该集合中添加和删除项,我添加了一些方法,这些方法将首先将集合从数组转换为列表,添加或删除项,然后将列表转换回数组 public void AddElement(Element element) { List<Element> list = new List<Element>(this.elements); list.Add(element); this.elements = list.ToArray(

我正在编写一个包含集合的可序列化对象。因此,为了能够从该集合中添加和删除项,我添加了一些方法,这些方法将首先将集合从数组转换为列表,添加或删除项,然后将列表转换回数组

public void AddElement(Element element) {
   List<Element> list = new List<Element>(this.elements);
   list.Add(element);
   this.elements = list.ToArray();
}
public void AddElement(元素){
列表=新列表(this.elements);
列表。添加(元素);
this.elements=list.ToArray();
}
创建这样的列表可能有问题吗

列表(此.elements

或者数组在开始时的长度为0是一个问题

EDIT1:从列表字段转换也会留下一个空数组


EDIT2:不需要XML序列化。

您的代码工作正常。以下是:

Program.cs

using System;

namespace Test1
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new TestClass();
            test.AddElement(new Element());
            Console.WriteLine(test.HowMuch());
        }
    }
}
using System.Collections.Generic;

namespace Test1
{
    class TestClass
    {
        private Element[] elements = new Element[0];

        public void AddElement(Element element)
        {
            List<Element> list = new List<Element>(this.elements);
            list.Add(element);
            this.elements = list.ToArray();
        }

        public int HowMuch()
        {
            return elements.Length;
        }
    }
}
namespace Test1
{
    class Element
    {
    }
}
TestClass.cs

using System;

namespace Test1
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new TestClass();
            test.AddElement(new Element());
            Console.WriteLine(test.HowMuch());
        }
    }
}
using System.Collections.Generic;

namespace Test1
{
    class TestClass
    {
        private Element[] elements = new Element[0];

        public void AddElement(Element element)
        {
            List<Element> list = new List<Element>(this.elements);
            list.Add(element);
            this.elements = list.ToArray();
        }

        public int HowMuch()
        {
            return elements.Length;
        }
    }
}
namespace Test1
{
    class Element
    {
    }
}
该示例输出1,而不是0


最可能的原因是您将
this.elements
分配给变量,因此存储数组的旧版本。

什么是
this.elements
?尝试在我的对象中使用非序列化的私有列表字段。并将其放入阵列中。数组仍然为空。当列表包含9项时。this.elements:是对象中包含此方法的数组字段吗
this.elements
不是列表有什么特殊原因吗?J.N.如果我错了,请纠正我。但我认为列表是不可序列化的。此外我告诉过你数组的长度。事实上完全正确。这确实有效。在我的文件中发现了一些错误的偏差(这是一种混乱)