質問: new car[1]; bike[0].set(1);//ここでひっかかる } } } これをじっこうするとデバックは通るのですが、label1_clickイベントが発生すると、「nullの場所を参照しています」という意味のエラーが出てしまいます。 c#はほとんど初心者なので、初歩的なミスだとおもうんですが、 よろしければ御回答をお願いします。
回答: こんにちわ。 確かにそのコードでは、エラーになります。 配列というのは、単にデータの集合を現しているに過ぎません。 つまり、 car[] bike = new car[1]; という記述は、carオブジェクトが1つ入る「箱(bike)」を用意しているに過ぎず、 上記の段階で、箱の中にcarオブジェクトが入るわけでありません。 箱の中にcarオブジェクトが入っていないにも関わらず、 以下のような記述をしてしまうと、 bike[0].set(1); 「bike[0]には何も入っていない=null」と判定されエラーになってしまうのです。 質問者様がお望みの動きをさせたい場合、carオブジェクトをインスタンス化する必要があります。 つまり、 car[] bike = new car[1]; car mycar = new car(); mycar.set(1); bike[0] = mycar; または、 car[] bike = new car[1]; bike[0] = = new car(); bike[0].set(1); となります。