投稿者 魔界の仮面弁士  (社会人) 投稿日時 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 された時点でインスタンス化されているわけですから。