• ベストアンサー

VB.NETのStructureの使い方を教えてください。

Publicの宣言をしてStructureを使いたいのですが、 2重になっているStructureを使う正しい方法を教えて頂きたいです。 現在 Structure OYA Dim zzz As String Structure KO_1 Dim No1 As String Dim No2 As String Dim No3 As String End Structure End Structure Public TESTOYA As OYA Public TEST_1 As OYA.KO_1 Sub ABCDE() TEST_1.No1 = 1 TESTOYA.KO_1.No1 = 1 End Sub というようになっているのですが、 Sub ABCDE()内の TESTOYA.KO_1.No1 = 1 という使い方をしたいのですが、この状態だとエラーになってしまいます。 TEST_1.No1 = 1 とすれば大丈夫なのですが、これだと OYAを入力してメンバを出すことが出来ないので、2重にする意味がなくなってしまいます。 KO_1は実際はKO_50くらいまであって 実際は連番ではないので、OYA.と入力したら、KOのメンバが出て その後、No1などのメンバが出て欲しいです。 (入力しやすいように) この様な使い方があれば正しい記入方法をご教授願えないでしょうか。 それと、最初の変数zzzの宣言は要らないのですが、 これを省くとエラーになってしまいます。 この部分も正しい使い方ではないように思うのですが、 ご教授頂ければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Gab_km
  • ベストアンサー率40% (20/50)
回答No.2

Structureの定義の中に別のStructureの定義を書かないようにしましょう。 別々に定義して、親のStructureの定義の中に、メンバ変数として、子のStructureを用意してあげてください。 例えば、 Public Structure MonthDay Public intMonth As Integer Public intDay As Integer End Structure Public Structure YearMonthDay Public intYear As Integer Public monthAndDay As MonthDay End Structure こんな風にすれば、おそらくできるはずです。 でも、わざわざStructureの中にStructureを入れる必要性はないかも知れません。 Structureで定義する方がいいのか、Classとした方がいいのか、いろいろ調べて実装してみるといいと思います。

参考URL:
http://msdn.microsoft.com/ja-jp/library/2hkbth2a(VS.80).aspx
goo081102
質問者

お礼

Gab_km様ご回答ありがとうございました。 こちらの方法でも思い通りの状態になりました。 おっしゃる通り入力時に便利になる点を除いたら Structureである意味がほとんどない使い方のようですので、 次の機会にはClassについて勉強してみたいと思います。 どうもありがとうございました。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

構造体OYAに 構造体KO_1のオブジェクトをメンバーとして持たせましょう Structure OYA   dim zzz as String   Dim objKo as KO_1   Structure KO_1     dim No1 as String     dim No2 as String     dim No3 as String   End Structure   ' これを追加 End Structure Public TESTOYA As OYA Sub ABCD()   TESTOYA.objKo.No1 = "Test" End Sub といった具合です

goo081102
質問者

お礼

redfox63様ご回答ありがとうございます。 お教え頂いた方法で思い通りの状態になりました。 また、zzzの部分が不要という疑問も解決しました。 ありがとうございました。

関連するQ&A