2

我分配了两个字符串数组:

string[] SelectColumns = {},WhereColumns={};

它们都充满了数据项。例如 SelectColumns.length = 7,WhereColumns.Length=3;

当我去实现它们时,我遇到了一个异常:object reference not set to an instance of an object。我在下面使用它们:

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; }
    }
}
4

3 回答 3

3

您可能只有字符串数组引用_SelectCol,但没有实际数组,需要实例化_SelectCol字符串数组以为其元素分配内存。

DPS._SelectCol = new string [SelectColumns.Length];

for (int i = 0; i < SelectColumns.Length; i++)
{
    DPS._SelectCol[i] = SelectColumns[i];
}
于 2012-12-28T11:57:43.603 回答
0

我看不到您在andDefaultProfileSetting后面初始化字段的任何地方,所以这些是._WhereCol_SelectColnull

至少你应该有:

private string[] SelectCol = new string[size];

虽然这些应该有某种初始人口,否则你也会得到IndexOutOfBoundsException

于 2012-12-28T11:57:39.070 回答
0

很可能您的 DPS 数组属性未使用正确的长度进行初始化。您最好放置一个断点并调试您的解决方案,这样您就可以自己查看哪里出了问题。

如果您说 SelectColumns 和 WhereColumns 已经填充了值,那么我敢打赌 DPS._SelectCol 会导致问题。

您必须以正确的大小初始化该数组。类似于: DPS._SelectCol = new string[SelectColumns.Length];

如果您将数组抛在后面并开始使用 List,那么您就不会再遇到这些问题了。

于 2012-12-28T12:09:49.773 回答