クラスの配列を作りたいのですがうまくいきません。
Class1というクラスが定義されているとして、
たとえばフォームのボタンをクリックして、
Class1の配列インスタンスcls(5)を
Dim cls(5) As New Class1
のように宣言すると、
”配列をNewで宣言できない”となってエラーになります。
Dim cls(5) As Class1 で宣言し
cls(1)のパブリックメンバーPにアクセスしようとすると、
ビルド時点ではエラーは出ませんが、
ボタンをクリックするとエラーとなって、
”オブジェクト参照がオブジェクト インスタンスに設定されていません。”
というエラーコメントになってしまいます。
Private Sub Button1_Click( )
Dim cls(5) As Class1
cls(1).P = 1
End Sub
VBを10年来やってきて、最近.NETに置き換えているのですが、
この辺のところが今ひとつ飲み込めなくて弱っています。
宜しくご指導お願いします。
class aa
Class CC
Public Colora As String
Public Suuryou As String
End Class
Public CCC(2) As CC
Sub New()
CCC(0) = New CC
CCC(1) = New CC
CCC(2) = New CC
End Sub
end class
なんか変なやり方ですがこんな感じでできました
メダカさんの方法であっていますが、補足説明。
例えば
Dim cls As New Class1
は
Dim cls As Class1 = New Class1
と同じ意味です。省略されているに過ぎません。
つまり、
Dim cls(5) As Class1
では、cls変数の型が指定されているだけで、
New (インスタンス化)されていないため、
実行時にエラーが発生します。
これを回避するにはメダカさんのレスのように、
配列へ一つずつインスタンス化してやる必要があります。
クラス、オブジェクト、インスタンス化、等をキーにして、
一度調べてみて下さい。
メダカさん、rakiさんありがとうございました、解決しました。
いつもながら、問題が解決すると本当にうれしくて、もう全てのことが分かったような気がするのですが、しばらくするとまた次の問題にぶつかります。
今後とも宜しくお願いします。
ツイート | ![]() |