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

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(使用前将#替换为@)

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

随机推荐

  • 为什么在 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
  • 将对象添加到列表时出现空引用异常[关闭]

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