Datatable System.NullReferenceException错误

时间:2014-04-06 22:22:03

标签: c# exception reference null

运行我的程序时,我收到一个奇怪的错误,我一直试图修复一段时间。 编辑:

        DataTable peers = new DataTable();

        ObjectSerialisation.FileInit();

        if (ObjectSerialisation.PeerExists() && !(ObjectSerialisation.PeersEmpty()))
        {
            peers = ObjectSerialisation.DeserialisePeers();
        }
        else
        {
            peers.Columns.Add("nick");
            peers.Columns.Add("address");
            peers.Rows.Add("xnbya", "4lxi4nv5kkhyks2x.onion");
            peers.Rows.Add("curly", "h3m36rpq35rv7n36.onion");
            peers.PrimaryKey = new DataColumn[] { peers.Columns["address"] };
        }

        lstRecentChats.DataSource = peers;
        lstRecentChats.DisplayMember = "nick";

lstRecentChats.DataSource = peers;总是抛出:

An unhandled exception of type 'System.NullReferenceException' occurred in ************.exe

Additional information: Object reference not set to an instance of an object.

我不知道为什么会这样,因为我确保DataTable始终包含数据我甚至尝试删除当前存储的数据以强制它使用在else代码块中定义的数据我不知道如何解决它我尝试在另一个文件中使用静态DataTable,但都无济于事。任何帮助将不胜感激。

编辑2:

代码可以简化为:     公共部分类frmMain:表格     {         公共frmMain()         {             DataTable peers = new DataTable();

        peers.Columns.Add("nick");
        peers.Columns.Add("address");
        peers.Rows.Add("xnbya", "4lxi4nv5kkhyks2x.onion");
        peers.Rows.Add("curly", "h3m36rpq35rv7n36.onion");
        peers.PrimaryKey = new DataColumn[] { peers.Columns["address"] };

        lstRecentChats.DataSource = peers;
        lstRecentChats.DisplayMember = "nick";
    }
}

错误仍然发生在此代码中。

1 个答案:

答案 0 :(得分:1)

似乎lstRecentChats为空。如果您在InitializeComponent方法之前将此代码放入构造函数中,那么您在初始化之前尝试访问lstRecentChats。首先调用InitializeComponent然后设置DataSource。