我正在编写一个包含集合的可序列化对象。因此,为了能够添加和删除该集合中的项目,我添加了首先将集合从Array转换为List,添加或删除项目然后将List转换回Array的方法。
public void AddElement(Element element) {
List<Element> list = new List<Element>(this.elements);
list.Add(element);
this.elements = list.ToArray();
}
像这样创建List可能有问题吗?
列表(的 this.elements )
或者是一个问题,Array在开始时长度是0?
EDIT1:从列表字段转换也会留下一个空数组。
EDIT2:不需要XML序列化。
答案 0 :(得分:2)
您的代码运行正常。这是MCVE:
<强> 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());
}
}
}
<强> TestClass.cs 强>
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;
}
}
}
<强> Element.cs 强>
namespace Test1
{
class Element
{
}
}
示例输出1,而不是0。
最可能的原因是您将this.elements
分配给变量,因此存储旧版本的数组。