
画面上に、
名前を入力するTextBoxがひとつと、
顧客情報を入力するDataGridViewがひとつあり、
そのDataGridViewには、連番、名前、メールアドレスの3列, 20行のデータがあります。
この2つのコントロールから入力されたデータをDBに登録したり、
DBから読み込んだ値を表示しようとしています。
(ほかにもいろいろ処理するのですが。)
データを一時的に保持しておくクラスを作ろうと考え、
わざわざインスタンスを作るまでもないと思ったので、
staic public なメンバを使用して、
以下のようなクラスを作ってみました。
class Data {
public class Customer
{
static public int no = 0;
static public string name = "";
static public string mailAddr = "";
}
static public string name = "";
static public Customer[] customers = new Customer[20];
}
ところが、たとえば、
customers[0].no = 1;
のようにしようとすると、
「インスタンス参照でメンバー 'Data.Customer.no' にアクセスできません。代わりに型名を使用してください。」
となります。
どういう意味でしょう?
また、どうすれば static public の配列を持てるでしょうか?
(そもそもこういうやりかたはしない?)
よろしくお願いします。
No.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 の意味がまだよく理解できていなかったということです。
参考になりました。
ところで、このプログラム方は、
回答をいただくまでの間に、このやりかたをやめて、普通のプロパティにしました。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
-
4
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
5
C#「オブジェクト参照が必要です」(初心者)
その他(プログラミング・Web制作)
-
6
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
7
C# 配列の変数宣言について。
C言語・C++・C#
-
8
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
9
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
10
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
11
変数の前のビックリマークについて!
PHP
-
12
private static という変数の修飾
Java
-
13
C#についてText Boxの枠
その他(ソフトウェア)
-
14
データベースのINT型項目にNULLはNG?
MySQL
-
15
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
16
C#でほかのファイルにある自作クラスを使用したい場合
その他(プログラミング・Web制作)
-
17
C#のクラスで値渡しをする
その他(プログラミング・Web制作)
-
18
C# インスタンスの破棄
その他(プログラミング・Web制作)
-
19
【C#】ハッシュテーブル(連想配列)の値が配列の場合について
C言語・C++・C#
-
20
CloseとDisposeの違い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
newしないインスタンス?実体化...
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
オブジェクト参照がオブジェク...
-
生成したインスタンスを削除す...
-
ファイル読み込み/書き込み速度...
-
C#において、同じインスタンス...
-
VB.NET Newしたものを変数に代...
-
クラスインスタンスとクラス型...
-
SetWindowsHookExで質問
-
問題が解けません(インスタンス...
-
.net frameworkで作られたフォ...
-
AVAudioPlayer インスタン
-
staticメソッドにするかどうか...
-
javaのクラスの作り方、エラー...
-
変数の参照でエラーが出てしま...
-
CからC++の関数呼び出し
-
フォームの存在をチェックする方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
VB.NET getとsetの概念がわかり...
-
変数名の付け方
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
複数の変数を宣言する時、同時...
-
C# インスタンスの破棄
-
「インスタンス」の意味をわか...
-
C#「オブジェクト参照が必要で...
-
オブジェクト参照がオブジェク...
-
newしないインスタンス?実体化...
-
フォームの存在をチェックする方法
-
変数の参照でエラーが出てしま...
-
文字列を日付に変換でParseExce...
-
マルチスレッド間でデータ交換...
-
VB6.0で、DLLを動的に参照したい
-
String a = "a"; と String b =...
-
C#でオブジェクトの有無を取得する
-
エクセル(複数インスタンス)...
おすすめ情報