- - PR -
構造体にデータをセットしたい
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-04-24 18:28
VB.NETで構造体を作成しました。
このメンバーにデータをセットしたいのですが、下記でエラーが出て データセットできません。どうしてでしょうか? よきアドバイスをお願いします。 Private Structure strInfo Private SiteID As String '店舗ID Private Sales_Year As String '売上年 Private Sales_Month As String '売上月 Private Sales_Date As String '売上日 End Structure Private Sub Btn_Update_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Update.Click Dim DailyRep As strInfo DailyRep.SiteID="aaa" 'ここがエラーとなる End Sub | ||||||||||||
|
投稿日時: 2003-04-24 18:57
いしです。
構造体のメンバーにPrivateをつけているからではないですか? 外からアクセスできなくなります。 #というか、構造体のメンバーにもそういう指定ができるんだ・・・ | ||||||||||||
|
投稿日時: 2003-04-24 21:08
そうでした。
もっとよく見るべきでした。すみませんでした。
| ||||||||||||
|
投稿日時: 2003-04-25 10:45
下記の様に構造体のメンバーをpublicにすることにより解決しました。
しかし、メンバーBは初期設定で下記の様にしたいのですが、エラーと なります。なぜでしょうか? Public Structure AAA Public StoreName As String Public A() As Integer Public B() As Integer = {0, 1, 2, 3, 4, 5, 6, 7} Public C() As Integer End Structure | ||||||||||||
|
投稿日時: 2003-04-25 11:33
もっぱらC#ばかりを使っているので、VB.NETでどうなのか詳しくは
分かりませんが、おそらく構造体のメンバーは何も指定しなくても Public扱いになりませんか? そして、構造体のPublic/Privateと、メンバーのPublic/Privateは 分けて考えるべきだと思います。 以下のようでよくないですか?
初期値を与えたいのであれば、Classにして、コンストラクタで初 期化するというのが常套手段ではないでしょうか? でも、もしか すると、Structureでもコンストラクタを書けるかもしれません。 いずれにしてもVB.NETを使ったことがないので、あんまりあてにな りませんが・・・ | ||||||||||||
|
投稿日時: 2003-04-25 11:55
こんにちは。
ヘルプの「Structure ステートメント」のところでこんな記述がありますけど... --------------------------------------------------------------------- 構造体のデータ メンバの値を宣言の一部として初期化することはできません。 構造体のパラメータ化されたコンストラクタを使ってデータ メンバを初期化するか、 または構造体のインスタンスを作成した後にメンバに値を割り当てる必要があります。 --------------------------------------------------------------------- | ||||||||||||
|
投稿日時: 2003-04-27 19:14
これはちょっと強引かな?
構文が間違っているかもしれないので、そのときは適当に修正してください。
いずれにせよ、フィールドを Public にして直接アクセスできるようにするのは、 オブジェクト指向としてはあまりよくないみたいです。そのため、VB.NET や C# の場合はプロパティを介してアクセスするようにします。 (Java など、プロパティという概念がない言語ではメソッドを利用します)
確か VB.NET では何もつけないとクラスでも全部 Public になったような…
パラメータのないコンストラクタは書けません。パラメータのあるものであれば書けます。 関係ないですが C++ の struct でも書けます。 | ||||||||||||
1
