こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

コレクションの取り扱い

宜しくお願いします。
下記のようなソースでクラスをコレクション化したのですが
for each文で値が変わってくれません。(泣)
何か基本的な事だと思うのですが、お知恵を頂ければ幸いです。m(__)m

'emp Collection
Public Class clsEmp
Inherits System.Collections.ArrayList

'色々とメソッドを追加予定・・・
End Class
'empの構造体
Public Structure emp
Public ID As Integer
Public name As String
Public score As Integer
Public Sub New(ByVal ID_ As Integer, ByVal name_ As String)
Me.ID = ID_
Me.name = name_
Me.score = -1
End Sub
End Structure

'モジュール

'empのCollectionを宣言
Private emps As New clsEmp

Private Sub Form_Load(・・・)
Dim i%

'とりあえず、インスタンスを作る
For i = 0 To 10
emps.Add(New emp(i, "test" & i))
Next

End Sub
Private Sub Button3_Click(・・・)
Dim emp_ As emp

'初期化してみる
For Each emp_ In emps
Debug.WriteLine(emp_.name)
emp_.score = 0
Next

'確認用
For Each emp_ In emps
Debug.WriteLine(emp_.score)
Next

End Sub

投稿日時 - 2005-07-21 10:37:08

QNo.1527861

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

トラブルシュートの常套手順は

(1) トラブルの発生を保ったまま、どんどんコードを削減して小さくする。
(2) 上記(1)の途中でトラブルが発生しなくなったら、そのときに削減したコードが怪しいのでよく調べる。
(3) 必要最小限までコードを小さくしてもトラブルが解消しない場合は、その「トラブルが再現する最小限のコード」を詳しい人に見てもらう。

です。

ご質問のコードはまだ(1)の途中ですよね。例えば、構造体に複数のメンバ変数がありますが、これだけ全部ないとトラブルは再現しないのですか? 違いますよね。

またご質問のコードはそのままコピー&ペーストしても動作しないため、(3)も満たしていません。とはいえ、これはやむを得ないところもあります。このQ&Aシステムでは、質問の欄の文字数が厳しく制限されていますからね。

というわけで、(1)が済んだら、そのコードを補足として書いてみてください。補足であれば質問欄よりも文字数の制限が緩いので、そのままコピー&ペーストして使える量のコードでも書き込むことができます。ただし!ちゃんとコード削減を行って、必要最小限にすることが先決です。

投稿日時 - 2005-07-21 11:20:47

お礼

有難うございました。
また、お礼が遅くなりまして申し訳ありませんでした。

投稿日時 - 2005-08-19 14:46:09

あなたにオススメの質問