将对象添加到列表时出现空引用异常[关闭]

2023-11-25

当我尝试将对象添加到对象内的列表时,即使该对象的所有属性都包含数据,我仍然收到 NullReferenceException。 课程--

public class OrderInfo
    {
        public virtual string OrderNum { get; set; }
        public virtual string TrackingNum { get; set; }
        public virtual DateTime Shipdate { get; set; }
        public virtual string Cost { get; set; }
        public virtual string ShipMethod { get; set; }
        public virtual string ShipService { get; set; }
        public virtual string Country { get; set; }
        public virtual decimal Weight { get; set; }
        public virtual List<OrderItemInfo> OrderiTems { get; set; }

        public void AddShipmentItem(OrderItemInfo oi)
        {
            this.OrderiTems.Add(oi); // NULL Reference HERE
        }

    }

    public class OrderItemInfo
    {
        public virtual string OrderItemCode { get; set; }
        public virtual decimal? Quantity { get; set; }
        public virtual decimal? Cost { get; set; }
        public virtual decimal? Weight { get; set; }
        public virtual string Store { get; set; }
    }

然后我有代码可以捕获是否存在可为空的数据。

private static OrderInfo GetOrderInfo(DataRow dr)
    {
        SqlConnection ShipworksConnectionString = 
        SqlCommand ShipworksCmd = new SqlCommand("SELECT OrderItem.Code,  

        InternationalShipmentCostAnalysisApp.OrderInfo ip = new      InternationalShipmentCostAnalysisApp.OrderInfo
            {
                OrderNum = (dr[0] is DBNull) ? String.Empty : dr[0].ToString(),
                TrackingNum = (dr[1] is DBNull) ? String.Empty : dr[1].ToString(),
                Shipdate = (dr[2] is DBNull) ? DateTime.MinValue :  Convert.ToDateTime(dr[2]),
                Cost = (dr[3] is DBNull) ? String.Empty : dr[3].ToString(),
                ShipMethod = (dr[4] is DBNull) ? String.Empty : dr[4].ToString(),
                ShipService = (dr[5] is DBNull) ? String.Empty : dr[5].ToString(),
                Country = (dr[6] is DBNull) ? String.Empty : dr[6].ToString(),
                Weight = (dr[7] is DBNull) ? 0 : Convert.ToDecimal(dr[7])

            };

        ShipworksConnectionString.Open();

        SqlDataReader rdr = ShipworksCmd.ExecuteReader();
        DataTable dt = new DataTable();

        dt.Load(rdr);
        rdr.Close();
        ShipworksConnectionString.Close();

        foreach (DataRow item in dt.Rows)
        {
            if (item != null)
            {
                InternationalShipmentCostAnalysisApp.OrderItemInfo i = new InternationalShipmentCostAnalysisApp.OrderItemInfo
                {
                    OrderItemCode = (item[0] is DBNull) ? String.Empty : item[0].ToString(),
                    Quantity = (item[1] is DBNull) ? 0 : Convert.ToDecimal(item[1]),
                    Cost = (item[2] is DBNull) ? 0 : Convert.ToDecimal(item[2]),
                    Weight = (item[3] is DBNull) ? 0 : Convert.ToDecimal(item[3]),
                    Store = (item[4] is DBNull) ? String.Empty : item[4].ToString()

                };

                ip.AddShipmentItem(i);
            }

        }


        return ip;
    }

看来你从来没有设置过你的财产......你把它定义为List<OrderItemInfo> type但你从来没有将它初始化为instance那种类型的。尝试在构造函数中初始化它:

public class OrderInfo
{
    public OrderInfo
    {
        OrderiTems = new List<OrderItemInfo>();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将对象添加到列表时出现空引用异常[关闭] 的相关文章

  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr

随机推荐

  • 为什么在 HashMap.keySet() 中声明局部变量 ks? [复制]

    这个问题在这里已经有答案了 我查看了java util HashMap的源代码 看到了以下代码 public Set
  • 提供正确的移动语义

    我目前正在尝试弄清楚如何使用包含指向已分配内存的指针的对象正确执行移动语义 我有一个大数据结构 其中包含指向实际存储的内部原始指针 出于效率原因 现在我添加了一个移动构造函数并移动operator 在这些方法中我std move 指向新结构
  • IServiceCollection 覆盖单个构造函数参数

    我有一个带有三个构造函数参数的类 在我的组合根中 我只想定义 覆盖one三个构造函数参数 另外两个依赖项已映射到我的 DI 容器中 并且应该从 IServiceProvider 创建 使用 Ninject 我可以做这样的事情 Bind
  • Java ServerSocketChannel SocketChannel(回调)

    我正在努力学习Java 我想实现一个简单的联网连接 4 游戏以及聊天功能 我希望我的网络逻辑是非阻塞的 所以经过大量研究 我发现 SocketChannel 就是我重新调整我的需求后的样子 仍然没有意义的是 SocketChannel 中缺
  • 如何将串口通信读入缓冲区并解析出完整的消息

    我使用以下代码从 com 端口读取值 Private port As New SerialPort COM13 9600 Parity None 8 StopBits One Private Sub port DataReceived By
  • 猫头鹰旋转木马2随机功能

    Owl Carousel 2 有没有办法制作国王随机功能 我需要页面上的幻灯片随机加载 之前在旧的猫头鹰旋转木马版本中我是这样做的 document ready function Sort random function function
  • 是否可以自动序列化 C++ 对象? [复制]

    这个问题在这里已经有答案了 有没有类似于 C 的 Java NET 序列化的东西 升压包含一个序列化库 我自己没有使用过 但通常 boost 库工作得很好
  • 如果使用 Oracle 钱包,正确的 JDBC URL 语法是什么?

    有 2 种 URL 语法 旧语法仅适用于 SID 新语法适用于 Oracle 服务名称 旧语法 jdbc oracle thin HOST PORT SID 新语法 jdbc oracle thin HOST PORT SERVICE 什么
  • 用于拔出耳机的广播接收器

    您好 我正在开发一个应用程序 当耳机从手机上取下时 该应用程序会生成一个事件 我创建了一个广播接收器 其接收方法为 public void onReceive Context context Intent intent TODO Auto
  • memcpy() 可以用来更改“const”成员数据吗?

    For a struct with const members struct point const int x const int y 用作会员数据 struct Foo point pt 0 0 void move x int valu
  • 使用字符串调用 Sub

    我想根据值调用不同的子程序i 例如 如果i 1 call sale call1 and if i 2 call sale call2 Private Sub test Click Dim i As String Dim pro As Str
  • 如何使用 gcc 风格的内联汇编打印寄存器号?

    灵感来自最近的一个问题 gcc 式内联汇编的一种用例是对编译器和汇编器都不知道的指令进行编码 例如 我给了这个例子了解如何使用rdrand工具链上的指令太旧而无法支持它 rdrand rax setc b1 asm volatile byt
  • 当我使用ui路由器在angularjs中重定向页面时如何传递参数?

    我正在尝试通过 ui router state go 传递参数 但是 我不确定如何传递参数 这是我的代码 app config function stateProvider stateProvider state first url fir
  • IIS URL Rewrite 如何处理 # 锚标记

    我正在努力寻找有关如何最好地处理带有锚标记的 URL 的信息 例如 www example com index html foo 中的 foo 我们当前的情况是尝试对带有锚标记的 URL 使用重写映射 但它被另一个重写映射所取代 e g
  • 用 Javascript 显示周数?

    我有以下代码 用于显示当天的名称 后跟一组短语
  • 如何在 JavaScript 中从字符串中删除文件扩展名?

    例如 假设x filename jpg 我想得到filename where filename可以是任何文件名 为了简化 我们假设文件名仅包含 a zA Z0 9 I saw x substring 0 x indexOf jpg on D
  • 是否可以在 Mac Catalyst 中使用全屏?

    将游戏移植到 macOS Catalyst 但窗口很小 是否可以全屏启动 Yes可以全屏启动 方法 1 从 Mac Catalyst 应用程序使用 AppKit 的更通用方法 要切换到全屏 您需要使用 AppKit 和 NSApplicat
  • std::getline 在遇到 eof 时抛出

    std getline当它得到一个时抛出异常eof 我就是这样做的 std ifstream stream stream exceptions std ifstream failbit std ifstream badbit try str
  • JavaScript 语句中的变量

    如何在此 JavaScript 语句中添加变量字符串 其中 name 可以对应于任何有效的字符串 例如 WebkitTransform 或 Moztransform 等 document getElementById test style
  • 将对象添加到列表时出现空引用异常[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 当我尝试将对象添加到对象内的列表时 即使该对象的所有属