我已经分配了两个字符串数组:
string[] SelectColumns = {},WhereColumns={};
它们都充满了数据项。例如,SelectColumns.length = 7,WhereColumns.Length = 3;
当我去实现它们时,我得到一个例外:对象引用未设置为对象的实例。 我在下面使用它们:
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; }
}
}
答案 0 :(得分:3)
您可能只有字符串数组引用_SelectCol
但不是实际数组,需要实例化_SelectCol
字符串数组以为其元素分配内存。
DPS._SelectCol = new string [SelectColumns.Length];
for (int i = 0; i < SelectColumns.Length; i++)
{
DPS._SelectCol[i] = SelectColumns[i];
}
答案 1 :(得分:0)
我无法在DefaultProfileSetting
中的任何位置看到您初始化_WhereCol
和_SelectCol
后面的字段,因此这些字段为null
。
至少你应该:
private string[] SelectCol = new string[size];
虽然这些应该有某种初始人口,否则你也会获得IndexOutOfBoundsException
。
答案 2 :(得分:0)
很可能您的DPS数组属性未使用正确的长度进行初始化。 你最好设置一个断点并调试你的解决方案,以便你可以自己看到它出错的地方。
如果你说SelectColumns和WhereColumns已经填充了值,那么我敢打赌DPS._SelectCol会导致问题。
您必须以正确的大小初始化该数组。就像是 : DPS._SelectCol =新字符串[SelectColumns.Length];
如果您将阵列放在后面并开始使用List,那么您将不再遇到这些问题。