未设置为对象实例的对象引用
本文关键字:对象引用 实例 对象 设置 | 更新日期: 2023-09-27 17:49:51
我已经分配了两个字符串数组:
string[] SelectColumns = {},WhereColumns={};
它们都充满了数据项。例如SelectColumns。
当我去实现它们时,我得到了一个异常:对象引用未设置为对象的实例。我在下面使用它们:
for (int i = 0; i < SelectColumns.Length; i++)
{
DPS._SelectCol[i] = SelectColumns[i];
}
for (int i = 0; i < WhereColumns.Length; i++)
{
DPS._WhereCol[i] = WhereColumns[i];
}
这里DPS是类的对象,如下所示:
public class DefaultProfileSetting
{
private string Server;
public string _Server
{
get { return Server; }
set { Server = value; }
}
private string Authentication;
public string _Authentication
{
get { return Authentication; }
set { Authentication = value; }
}
private string Login;
public string _Login
{
get { return Login; }
set { Login = value; }
}
private string Pass;
public string _Pass
{
get { return Pass; }
set { Pass = value; }
}
private string DB;
public string _DB
{
get { return DB; }
set { DB = value; }
}
private string Table;
public string _Table
{
get { return Table; }
set { Table = value; }
}
private string[] SelectCol;
public string[] _SelectCol
{
get { return SelectCol; }
set { SelectCol = value; }
}
private string[] WhereCol;
public string[] _WhereCol
{
get { return WhereCol; }
set { WhereCol = value; }
}
}
您可能只有字符串数组引用_SelectCol
,但不是实际的数组,并且需要实例化_SelectCol
字符串数组来为其元素分配内存。
DPS._SelectCol = new string [SelectColumns.Length];
for (int i = 0; i < SelectColumns.Length; i++)
{
DPS._SelectCol[i] = SelectColumns[i];
}
我在DefaultProfileSetting
中没有看到任何地方初始化_WhereCol
和_SelectCol
后面的字段,所以这些是null
。
至少你应该有:
private string[] SelectCol = new string[size];
虽然这些应该有一些初始种群或者你也会得到IndexOutOfBoundsException
很可能您的DPS数组属性没有初始化为正确的长度。您最好设置一个断点并调试您的解决方案,这样您就可以自己看到哪里出了问题。
如果你说SelectColumns和whereccolumns已经填满了值,那么我打赌DPS。_SelectCol会导致问题。
必须将数组初始化为合适的大小。比如:DPS。
如果你离开你的数组,并开始使用列表,那么你就不会有这些问题了。