提问人: 提问时间:4/8/2014 更新时间:4/8/2014 访问量:630
序列化 XML 时出现 System.NullReferenceException [duplicate]
System.NullReferenceException while Serializing XML [duplicate]
问:
我想像下面一样序列化简单的类并写入XML文件。
示例类文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SampleXMLSerializeDeserialize
{
public class SampleXML
{
public SampleXML()
{
}
public List<IndividualInfo> IndividualInfo { get; set; }
public List<CommunicationInfo> Communication { get; set; }
}
public class IndividualInfo
{
public String Name { get; set; }
public String Age { get; set; }
}
public class CommunicationInfo
{
public String presentAdd { get; set; }
public String permanentAdd { get; set; }
}
}
序列化方法:
namespace SampleXMLSerializeDeserialize
{
class Program
{
static void Main(string[] args)
{
SampleXML s = new SampleXML();
s.IndividualInfo[0].Name="Jyoti";
s.IndividualInfo[0].Age = "25";
s.Communication[0].permanentAdd = "Dhaka";
s.Communication[0].presentAdd = "Dhaka";
XmlSerializer serializer = new XmlSerializer(typeof(SampleXML));
StreamWriter str = new StreamWriter(Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments) + @"\SAM.XML");
serializer.Serialize(str, s);
}
}
}
我在以下行获得System.NullReferenceExeption:s.IndividualInfo[0]。名称=“Jyoti”;
你能帮帮忙吗,我错过了什么
答:
3赞
Artyom Neustroev
4/8/2014
#1
您永远不会实例化集合的对象和集合本身。使用这个:[0]
s.IndividualInfo = new List<IndividualInfo>();
s.IndividualInfo.Add(new IndividualInfo { Name = "Jyoti" });
0赞
Raja Nadar
4/8/2014
#2
将构造函数设置为
public SampleXML()
{
IndividualInfo = new List<IndividualInfo>();
Communication = new List<CommunicationInfo>();
}
该列表未初始化,并且为 null。 对其他列表也执行相同的操作。
然后使用 Add 方法而不是索引访问。
s.IndividualInfo.Add(new IndividualInfo { Name = "Jyoti", Age = 25 });
评论
NullReferenceException