我是编程新手,在使用另一个类的列表属性创建一个类然后在 main 中访问它时遇到了问题。尝试将项目添加到列表后,我收到异常“对象引用未设置为对象的实例”,我在运行时收到此错误。我确实知道 List 引用为空,但我试图理解为什么它为空以及如何解决它。如果我只是在 main 中创建列表,我的代码将正常运行,但我希望将来将其作为一个类。就像我说的,我是面向对象编程的新手,并试图获取一些有关为什么会发生这种情况的信息。如果这是一个重复的问题,我深表歉意。我的代码片段如下:
static void Main(string[] args)
{
BookList myBookList = new BookList();
myBookList.bookList.Add(new Book("The Giver", "Lois Lowry", "Houghton Mifflin"));
myBookList.bookList.Add(new Book("Telling Lies", "Paul Ekman", "Norton & Company"));
}
class BookList
{
public List<Book> bookList { get; set; }
}
class Book
{
public Book(string title, string author, string publisher)
{
Title = title;
Author = author;
Publisher = publisher;
}
public string Title { get; set; }
public string Author { get; set; }
public string Publisher { get; set; }
}
谢谢,我感谢所有的帮助!
当你创建时BookList
,您实际上还没有初始化作为其成员的列表。您可以通过将初始化更改为:
BookList myBookList = new BookList() {bookList = new List<Book>()};
或者通过编写构造函数BookList
初始化列表的类;看起来像这样:
class BookList
{
public List<Book> bookList { get; set; }
public BookList(){ //New constructor
bookList = new List<Book>();
}
}
出现此错误的原因是,当您创建了 BookList 的实例时,您实际上并没有确保BookList
的内在booklist
属性已初始化。就像如果你尝试这样做:
List<string> newList;
newList.Add("foo");
那是行不通的,因为你只声明了newList
,没有初始化它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)