0

次のようなクラス内でクラスを定義した状況があります。

    public partial class ProdData 
    {
    private string prodID;
    private string Description;

    ...and so on until I get to

    private ProdDataChildren[] childItemsField; 
    }

ProdDataChildren は独自のクラスであり、親製品に属する可能性のあるサブ製品、つまり配列を識別するために使用しています。

私のプログラムの主要部分には、次のようなレコードを読み取るループがあります。

        while (myReader.Read())
        {
            ProdData ProductDataIn = new ProdData();
            ProductDataIn.ID = "values assigned here";

子を割り当てたいポイントに到達するまで、次のステートメントを使用して、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます

         ProductDataIn.ChildItems[i].ProdID = "string variable here";
        }

エラーの原因は、現在の ChildItems が null に設定されていることに関係していると思いますが、どのように値を割り当てる必要がありますか? どうにかして子アイテムをインスタンス化してインスタンス化する必要がありますか?どうすればよいですか?

助けていただければ幸いです。これは、一部の人にとっては簡単なことではないかもしれません。

4

2 に答える 2

2

まず、そのコレクションに何かを割り当てる前に、フィールドを初期化する必要があります。Listの代わりに使用することをお勧めしますArray

public partial class ProdData 
{

...and so on until I get to

private List<ProdDataChildren> childItemsField = new List<ProdDataChildren>(); 
}

これによりList、次のことができるようになります。

ProductDataIn.ChildItems.Add(new ProdDataChildren() { ProdID = "string variable here" });
于 2013-04-05T20:52:43.313 に答える
1

変数を宣言しただけです。配列の新しいインスタンスを作成しなかったため、まだ作成されていないオブジェクトにアクセスしようとしています。

于 2013-04-05T20:53:32.753 に答える