none
構造体の初期化の書き方 RRS feed

  • 質問

  • Public Structure Items
      Public Cnt As Integer
      Public A() As String
      Public B() As Long
      Public C() As String
    
      Public Sub Initialize()
        ReDim A(100)
        ReDim B(100)
        ReDim C(100)
      End Sub
    End Structure
    
    

    上記の構造体を初期化したいのですが、どのように書けばよろしいでしょうか?

    構造体がよくわからないので、伝授の程、宜しくお願いします。

     

     

     

     

     

    2011年6月25日 6:10

回答

  • 固定長配列を構造体内で宣言できないため、Initializeメソッドで固定長配列を確保するように実装されているようですね。ですから、以下のようにすれば良いと思います。

    Dim myStructure as Items

    myStructure.Initialize

    for i =0 to 100
       myStructure.A(i) = 初期化する値
       myStructure.B(i) = 初期化する値
       myStructure.C(i) = 初期化する値
    next i

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク 京太郎 2011年6月27日 6:45
    2011年6月25日 7:55
    モデレータ

すべての返信

  • 固定長配列を構造体内で宣言できないため、Initializeメソッドで固定長配列を確保するように実装されているようですね。ですから、以下のようにすれば良いと思います。

    Dim myStructure as Items

    myStructure.Initialize

    for i =0 to 100
       myStructure.A(i) = 初期化する値
       myStructure.B(i) = 初期化する値
       myStructure.C(i) = 初期化する値
    next i

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク 京太郎 2011年6月27日 6:45
    2011年6月25日 7:55
    モデレータ
  • 初期化の仕方がわからないということは、ご自分で作成した構造体ではないということでしょうか。

    名前から推測するならnewした後に(構造体なのでNewは不要です)、Initializeメソッドを呼ぶのでしょう。でもInitializeを読んでもCntプロパtティは初期化されませんね。

    どのような意図でこのような構造体を作成したのか、どのように初期化すればよいのかはこの構造体を作成した人でないとわからないと思います。フォーラムの回答では推測にすぎません。


    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/





    • 編集済み J.Hashimoto 2011年6月26日 0:29 タイプミスを修正
    2011年6月25日 8:00
  • 推測の域を出ないのですが、VB6.0からのアップグレードではないでしょうか?

    ■ 構造体の中の配列と固定長文字列
    http://msdn.microsoft.com/ja-jp/library/dd297715.aspx

     

    さて、前回の私の発言への追加ですが、初期化に関しては以下のようにすることもできます。

    構造体メンバーとして宣言された配列を初期サイズで宣言することはできません。
    http://msdn.microsoft.com/ja-jp/library/tey4z3ca.aspx

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年6月25日 12:58
    モデレータ
  • ありがとうございます。

    解決しました

     

    2011年6月27日 6:45