2

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

おそらく、DPS 配列のプロパティが正しい長さで初期化されていません。ブレークポイントを配置してソリューションをデバッグすることをお勧めします。これにより、正確にどこが間違っているかを自分で確認できます。

SelectColumns と WhereColumns が既に値で満たされていると言うなら、DPS._SelectCol が問題を引き起こしているに違いありません。

その配列を適切なサイズで初期化する必要があります。次のようなもの: DPS._SelectCol = new string[SelectColumns.Length];

配列を残して List を使い始めると、これらの問題はなくなります。

于 2012-12-28T12:09:49.773 に答える
0

DefaultProfileSettingの後ろのフィールドを初期化する場所がどこにもないので、これらは._WhereCol_SelectColnull

少なくとも次のものが必要です。

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

これらにはある種の初期人口が必要ですが、そうしないと同様に得IndexOutOfBoundsExceptionられます。

于 2012-12-28T11:57:39.070 に答える