- 締切済み
コレクションの取り扱い
宜しくお願いします。 下記のようなソースでクラスをコレクション化したのですが 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
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
トラブルシュートの常套手順は (1) トラブルの発生を保ったまま、どんどんコードを削減して小さくする。 (2) 上記(1)の途中でトラブルが発生しなくなったら、そのときに削減したコードが怪しいのでよく調べる。 (3) 必要最小限までコードを小さくしてもトラブルが解消しない場合は、その「トラブルが再現する最小限のコード」を詳しい人に見てもらう。 です。 ご質問のコードはまだ(1)の途中ですよね。例えば、構造体に複数のメンバ変数がありますが、これだけ全部ないとトラブルは再現しないのですか? 違いますよね。 またご質問のコードはそのままコピー&ペーストしても動作しないため、(3)も満たしていません。とはいえ、これはやむを得ないところもあります。このQ&Aシステムでは、質問の欄の文字数が厳しく制限されていますからね。 というわけで、(1)が済んだら、そのコードを補足として書いてみてください。補足であれば質問欄よりも文字数の制限が緩いので、そのままコピー&ペーストして使える量のコードでも書き込むことができます。ただし!ちゃんとコード削減を行って、必要最小限にすることが先決です。
お礼
有難うございました。 また、お礼が遅くなりまして申し訳ありませんでした。