2011-12-03 29 views
-1

私は、次のコードを持っている:とNullReferenceException

DataGridModel[] raport = new DataGridModel[100]; 
... // more code here, nothing relevant 
raport[i].populate(param1,param2); // NullReferenceException occurs here 

マイDataGridModelクラスが空のコンストラクタを持っているので、何も実際にそこに行われません。

raport変数を見ると、nullの100倍の値が入りますが、それはなぜですか?原因はnew DataGridModel[100]で初期化されています。

最初の行のオブジェクトの配列が失われた場合(1インスタンスのみ)、コードはうまく動作します。

私はそれがなぜnullであるのか分かりません。どんな助け?

+2

'populate'はどこに定義されていますか? – Oded

+0

'raport [x] .populate(param1、param2)'を意味しましたか? –

+0

@kendfreyはい、それは私のコードで持っている方法です、私はちょうどそれを間違ってコピー:)申し訳ありません。 –

答えて

4

new DataGridModel[100]で初期化しました。インスタンス—を作成しますが、100 null要素を含む配列のインスタンスです。

raport.populateの意味がわかりません。拡張メソッドだと思いますか? - しかし、ここでは、あなたの問題を解決することができます方法は次のとおりです。あなたは、参照型の新しい配列を作成するとき

DataGridModel[] raport = new DataGridModel[100]; 

for(int i = 0; i < raport.Length; i++) { 
    raport[i] = new DataGridModel(); 
} 

// ... 

raport.populate(param1, param2); 
+0

すばらしいもの。私はそれを知っていたはずです。ありがとう! –

1

、あなただけのタイプに参照の配列を割り当てています。したがって、DataGridModelへの100のヌル参照があります。

配列全体を反復処理し、DataGridModelをインスタンス化する必要があります。

1
DataGridModel[] raport = new DataGridModel[100]; 

これは、「それに100個のアイテムがある」というだけの配列を初期化します。

for(int i = 0; i < raport.Length; i++) 
    raport[i] = new DataGridModel(); 
1

new DataGridModel[100]DataGridModelオブジェクトへの100個の参照のためのスペースを持つ配列を作成します:あなたは、手動で各要素のconstuctorを呼び出す必要があります。

これらのオブジェクトを作成する必要があります。

関連する問題