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.如果我错了,请纠正我。但我认为列表是不可序列化的。此外我告诉过你数组的长度。事实上完全正确。这确实有效。在我的文件中发现了一些错误的偏差(这是一种混乱)