- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:インスタンス参照でアクセスできない。代わりに型名?)
インスタンス参照でアクセスできない。代わりに型名?
このQ&Aのポイント
- インスタンス参照でメンバー 'Data.Customer.no' にアクセスできません。代わりに型名を使用してください。
- static public の配列を持つためには、クラスのメンバとして宣言する必要があります。
- Dataクラスは一時的にデータを保持するためのクラスであり、インスタンスを作る必要はありません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
public class Customer { static public int no = 0; static public string name = ""; static public string mailAddr = ""; } と書いたとき、no 等が定義されるのはそのインスタンス(new 等で生成したモノ)ではなくクラスそのものになります。一方、customers 自体はともかくcustomers[0] に入っているモノはインスタンスです。 したがって、そのインスタンスで定義されていない no へのアクセスはできません。 Customer の定義を public class Customer { public int no = 0; public string name = ""; public string mailAddr = ""; } と変えましょう。 ……でもこの修正をしてもコンパイル時じゃなくって実行時にエラーが出るんじゃないかなぁ?
お礼
早速回答をいただきありがとうございます。 なるほど、わかりました。 static の意味がまだよく理解できていなかったということです。 参考になりました。 ところで、このプログラム方は、 回答をいただくまでの間に、このやりかたをやめて、普通のプロパティにしました。 どうもありがとうございました。