Cal*_*iez 1 c# visual-studio-2015
我是编程新手,在创建一个具有另一个类的list属性的类然后在main中访问它时遇到了问题.尝试将项添加到列表后,我得到异常"对象引用未设置为对象的实例"我在运行时遇到此错误.我知道List <>引用是null但我试图理解为什么它是null以及如何绕过它.如果我只是在main中创建List,我的代码将正常运行,但我希望将来将它作为一个类.就像我说的那样,我是编程OOP的新手,并试图获得有关为什么会发生这种情况的一些信息.如果这是一个重复的问题,我道歉.我的代码段如下:
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; }
}
Run Code Online (Sandbox Code Playgroud)
谢谢,我感谢所有的帮助!
在创建时BookList,您实际上没有初始化作为其成员的列表.您可以通过将初始化更改为:
BookList myBookList = new BookList() {bookList = new List<Book>()};
Run Code Online (Sandbox Code Playgroud)
或者通过为BookList初始化列表的类编写构造函数; 看起来像这样:
class BookList
{
public List<Book> bookList { get; set; }
public BookList(){ //New constructor
bookList = new List<Book>();
}
}
Run Code Online (Sandbox Code Playgroud)
你得到这个错误的原因是,当你创建了一个BookList实例时,你实际上并没有确保初始化了它BookList的内部booklist属性.就像你试图这样做:
List<string> newList;
newList.Add("foo");
Run Code Online (Sandbox Code Playgroud)
那是行不通的,因为你只声明了newList它,而不是初始化它.
| 归档时间: |
|
| 查看次数: |
1711 次 |
| 最近记录: |