【发布时间】:2014-01-28 00:47:05
【问题描述】:
我有一个类 clsPerson,它看起来像这样:
public class clsPerson
{
public string FirstName;
public string LastName;
public string Gender;
public List<Book> Books;
}
我有另一个类 Book,它看起来像这样:
public class Book
{
public string Title;
public string Author;
public string Genre;
public Book(string title, string author, string genre)
{
this.Title = title;
this.Author = author;
this.Genre = genre;
}
}
我编写了一个程序来测试将对象序列化为 XML。到目前为止,这是我所拥有的:
class Program
{
static void Main(string[] args)
{
var p = new clsPerson();
p.FirstName = "Kevin";
p.LastName = "Jennings";
p.Gender = "Male";
var book1 = new Book("Neuromancer", "William Gibson", "Science Fiction");
var book2 = new Book("The Hobbit", "J.R.R. Tolkien", "Fantasy");
var book3 = new Book("Rendezvous with Rama", "Arthur C. Clarke", "Science Fiction");
p.Books.Add(book1);
p.Books.Add(book2);
p.Books.Add(book3);
var x = new XmlSerializer(p.GetType());
x.Serialize(Console.Out, p);
Console.WriteLine();
Console.ReadKey();
}
}
不过,我在 VS2013 中遇到错误,在 p.Books.Add(book1); 行显示“NullReferenceException 未处理”。
显然,我做错了什么。我想我可以创建几本书,然后将它们添加到我的clsPerson 对象的List 称为Books。我无法弄清楚为什么在我尝试将其添加到我的Books 列表之前刚刚实例化book1 对象时错误显示为“NullReferenceException”。有人可以给我指点或建议吗?
【问题讨论】:
-
一般clsPerson是VB风格的命名约定;在 C# 中,您只需使用 Person 作为类名。更不用说您的命名约定在您的其他类中不一致。至少选择一种一致的命名类风格。最好是 C# 方式:)