Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ピクチャーBoxを10万個使えますか?
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=140#CommentId1051
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2008/11/28 07:20:26
> x = CInt(nagasa * Math.Cos(kakudo * 3.14159 / 180))
「3.14159」よりも、「Math.PI」を使った方が良いと思いますよ。
> Disposeが、まだ理解できない。
きちんと理解しようとすると、ちょっと難しい分野ですよね…。
> IroはDisposeする必要ありますか?
いえ。その cosS メソッドの中では、Dispose してはいけません。
cosS に渡すべき Pen を作成した側が、Dispose するようにします。
何故なら、その Pen は cosS メソッドが呼ばれた後も、他のメソッドなどから
利用される可能性があるためです。cosS 内では、その Pen が他で使用されるか
どうかを判断できないので、このメソッド内で Dispose するわけにはいかないのです。
大前提として……こうしたオブジェクトを Dispose する責任を負うのは、
それを「作成」した側であり、「取得」した側では無いという事です。
そしてもう一つ。Dispose について、さらにややこしい話をしなければなりません。
実は今回使っている Pens.Black 等は、Dispose してはいけないオブジェクトなのです。
Pens.Black、Pens.Aqua、Pens.Red などは「共有プロパティ」と呼ばれるものです。
これらの Pen は、.NET 全体で共有されるオブジェクトになっています。
この場合、にぃや♪さんは Pen を「作成」したのではなく、
.NET の内部で作成済みの Pen を「取得」しているだけなので、
VB のコードから、勝手に Dispose してはならないのです。
これが、自分で Pen を「作成」した場合においては、
Dim p As New Pen(Color.Black, 3)
cosS(100, hari, p)
p.Dispose()
などのようにして、『Dispose しなければならない』のですけれどね。