Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
Listコレクションについて
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=10888#CommentId23752
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2012/6/7 13:50:32
bord は「坑道(鉱山などの採掘通路)」を意味します。
「盤」の意味なら board ですよ。
> Public Sub Add(ByRef bords As Bord, ByVal position As Point, ByVal state As Stone.StoneState)
この場面で、第一引数を ByRef にする必要は無いはずです。
通常は ByVal のみを使用するようにしてください。
ByRef 指定が必要になる場合というのは、そのメソッド内で
bords = 新しいデータ
のように、引数に新しいデータを代入し、それを呼び出し側で
受け取るような場合ぐらいです。(あとは一部のAPI利用時など)
> Stone(,)クラス
Stone クラスの二次元配列という事ですか?
> bord.BordStones = bords.BordStones '<-引数で受け取ったStoneクラスを代入しました。
自作クラスだと想像しにくいと思いますが、Label や TextBox などの
画面部品を想像してみると分かりやすいと思います。
たとえば上記が、
bord.MessageLabel = Form1.Label1
のように書かれていた場合、これはラベルのコピーでは無く、
常に Form1 上にある Label1 というラベルを扱う事になるでしょう。
それを好しとするのであれば問題はありませんが、Form1/bords に依存しない
単独の Label /Stone としたいのであれば、代入時点で新たに New Label / New Stone しなおすか、
Stone の Clone Copy を作成するなどして「別のインスタンス」を用意せねばなりません。
もしくは、クラスの代わりに構造体を採用するという選択肢もあります。
> StoneクラスはBordクラスがNewされた時点でインスタンス化されています。
それは Form1.Label1 や Form1.TextBox1 の場合も同じですよね。
Form1 が New された時点でインスタンス化されているわけですから。