类列表的空引用异常

2024-03-05

我是编程新手,在使用另一个类的列表属性创建一个类然后在 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(使用前将#替换为@)

类列表的空引用异常 的相关文章

随机推荐

  • 删除 MVC 中的浏览器自动完成功能

    我目前正在尝试删除用户浏览器完成的表单自动完成功能 这可能会导致一些关键行为 因为它填充了密码字段 我已经将自动完成属性添加到我的所有文本框字段中 但是当我尝试使用 Firefox 时 它仍然会将我当前的登录信息加载到字段中 有谁知道如何解
  • JScrollPane 未添加到 JTextArea

    我看到了几个类似这个问题的问题 但我无法解决这个问题 我无法得到JScrollPane可见于JTextArea 谁能指出我哪里做错了 谢谢 package experiement import java awt Dimension impo
  • openlayers 策略:ol.loadingstrategy.bbox 不适用于 wfs 功能

    我尝试使用此代码使用 openlayers 4 最大 1000 可视化 wfs 中的地块 但是视图地图的每次移动或缩放时范围不会改变 或者新功能不会加载到图层中 var parcellaireSource new ol source Vec
  • MinGW GCC:“未知转换类型字符'h'”(snprintf)

    好的 我在 Windows 7 上使用 MinGW GCC 4 6 2 编译 C 文件时遇到了一个奇怪的问题 该文件包含以下 C 代码 include
  • 无法访问在 docker 内创建的 docker-compose 容器

    我有一个docker compose yml在端口上启动简单 HTTP 回显服务的文件8800 version 2 services echo server image luisbebop echo server container nam
  • CSS 比较运算符

    我需要定位占其父 div 80 以上的 div 作为进度条 考虑到我们可以瞄准specificCSS 宽度 data width 80 我们如何瞄准比较 这做到了not在 Firefox 或 Chrome 中工作 data width gt
  • Powershell / Perl:将多个 CSV 文件合并为一个?

    我有以下 CSV 文件 我想将它们合并到一个 CSV 中 01 csv apples 48 12 7 pear 17 16 2 orange 22 6 1 02 csv apples 51 8 6 grape 87 42 12 pear 2
  • 如何在Windows系统上安装geckodriver

    我正在尝试安装 webdriver 为了打开 Firefox 我需要安装 geckodriver 并将其安装在正确的路径中 首先 安装 geckodriver 的下载链接仅允许您安装非可执行文件 那么有没有办法让它成为可执行文件呢 其次 我
  • 无法探测视频 laravel ffmpeg

    我一直在关注这个教程https github com pascalbaljetmedia laravel ffmpeg https github com pascalbaljetmedia laravel ffmpeg我正在尝试调整我的视频
  • 具有相同名称的多个隐藏输入,始终检索最后一个输入[重复]

    这个问题在这里已经有答案了 foreach graphEdge as graphNode echo div class form check mb 3 div
  • 使用 Camel 的表达式语言获取并格式化昨天的日期

    我在 Camel 的路径中使用日期 fileName date now dd MM yyyy 但我现在需要的是 1天 那可能吗 嗯 不直接 简单语言中的 date 对象只能获取当前时间 或者您放置在标头中的某个时间值 您可以在 java 或
  • boost::thread 并创建它们的池!

    boost thread 类有一个默认构造函数 它给出 Not a thread 那么什么是 boost thread t1 适合什么 我可以给它一个稍后在代码中执行的函数吗 另一个问题 我正在尝试编写一个具有分阶段架构 SEDA 的小服务
  • Crossfilter过滤器不过滤(dc.js)

    我试图在交叉过滤器中使用过滤器 但是不行 这是 JSBin http jsbin com liwiru 8 edit 这是最相关的代码 var userDimension data dimension function d return d
  • Android 中用户不活动?

    我想查看我的 Android 应用程序中的用户不活动情况 如果用户在 1 分钟内没有执行任何活动 那么该应用程序应该离开屏幕 这意味着它应该显示一个对话框 要求输入密码 之前存储在共享首选项中 如果密码与活动应该再次开始 有人可以帮我解决这
  • 如何在响应和请求中添加新方法

    我想在node js的响应和请求中添加新方法 我怎样才能更有效地做到这一点 我不明白这是如何在express js中完成的 作为 JavaScript 有很多方法可以做到这一点 在我看来 对于express来说最合理的模式是将函数添加到早期
  • Flask-Login 不适用于同一域中的两个应用程序

    我一直在使用 Flask Login
  • 反思:如何获得泛型方法? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用反射调用泛型方法 https stackoverflow com questions 232535 how to use reflection to call generic method 通
  • Laravel - 服务提供者中的会话变量为空

    我正在尝试使用以下命令与所有视图共享会话值AppServiceProvider class In the boot 函数我说 view gt share key Session get key 但是 值是null 可能是什么问题 在控制器中
  • css 过渡:当用户设置了辅助功能选项“减少运动”时,触发过渡结束不会触发

    本周我一直在寻找我在网页中引入的 错误 我转向 CSS 过渡 具体来说 我用它来打开和关闭菜单 一位用户报告说 一旦打开菜单 他就无法关闭菜单 他有两次安装都出现了这个问题 而且我没有收到任何报告 我终于找到了问题的原因 操作系统的辅助功能
  • 类列表的空引用异常

    我是编程新手 在使用另一个类的列表属性创建一个类然后在 main 中访问它时遇到了问题 尝试将项目添加到列表后 我收到异常 对象引用未设置为对象的实例 我在运行时收到此错误 我确实知道 List 引用为空 但我试图理解为什么它为空以及如何解