- かさのば
- 会議室デビュー日: 2007/01/15
- 投稿数: 12
|
投稿日時: 2007-02-10 20:31
引用: |
|
じゃんぬねっとさんの書き込み (2007-02-10 12:47) より:
引用: |
|
かさのばさんの書き込み (2007-02-10 03:06) より:
例えば犬を買ってきてポチと名付けたとします。
(ポチ = new 犬)
その後、また新しい犬を買ってそいつにもポチという名前を付けたとします
そうなると前のポチはもうポチではなく唯の名無し犬です
|
このメタファでは誤解が生じるかと思います。
名前をつけるという喩えが、他の意味に捉えられてしまいそうです。
新しい犬を買って (インスタンス化して) '飼っていれば' (管理していれば)、
次の犬にポチという名前をつけても、何ら問題になりません。
少なくとも、前のポチは 「名無し犬」 にはならないです。
もう飼い主の届かない (参照できない) 場所にいるだけで、ポチはポチです。
引用: |
|
犬として存在はしていますが、名前がないのでもう誰も呼ぶことができません
新しく買ってきた犬と前からいたポチを区別するには、新しい犬にポチとは違う名前を付けるか
ポチに違う名前を与えるかしなければなりません
|
今回の例ではポチという同名をつけたとしても、インスタンスなのですから区別することができますよね。
区別どうこうより、目の行き届かない場所に行ってしまったので、何ともできないで良いと思います。
...という視点で見てしまう方は多いと思います。
たぶん、名前をつける == 管理するということに結びつかないからでしょう。
管理するのであれば、飼っているということがわかるメタファにしなくてはいけません。
ただし 「区別」 どうこうについては、メタファ以前に誤りがありそうです。
どせいさんのメタファは良いですね。
犬小屋に入れるという行為が、変数に格納することになるでしょうし、
当然飼っていることになりますから、参照を管理していることにもなります。
Jitta さんと、unibon さんの昇華ネタに結び付けますと、
ポチという名前で 「生きてはいる」 という視点も重要になります。
それにしても、GCHandle のうまい喩えが見つからない... orz
そして、何者かによって回収されて破棄されてしまうことがある... (´・ω・`) カワイソス
|
ご指摘ありがとうございます^^;
なんだか微妙に自分でも思い違いをしていたようで;;
もっと精進しないとダメですねorz
小屋から追い出されたポチは保健所に連れられ・・・(´・ω・`)
|
- よっこらしょ
- 常連さん
- 会議室デビュー日: 2006/11/18
- 投稿数: 24
|
投稿日時: 2007-02-11 13:49
そうですか。
やはり操作不能(プログラムより)のフォームになってしまうのか。
参照が無くなるってのはおかしいな、とは思ってたんだけど。
無くなればガベージされるはずだからね。
しかし、ガベージされるタイミングは不定だから参照が残ってるのかどうか分からなかった訳です。
Form1を消したら何個も作ってたForm2がいっせいに消えるから、親フォームからの参照が残っているはずだと思い投稿したのだが…。
このあたりの動きの真相が知りたいのですが情報ありませんか?
|
- 渋木宏明(ひどり)
- ぬし
- 会議室デビュー日: 2004/01/14
- 投稿数: 1155
- お住まい・勤務地: 東京
|
投稿日時: 2007-02-11 14:26
引用: |
|
しかし、ガベージされるタイミングは不定だから参照が残ってるのかどうか分からなかった訳です。
Form1を消したら何個も作ってたForm2がいっせいに消えるから、親フォームからの参照が残っているはずだと思い投稿したのだが…。
このあたりの動きの真相が知りたいのですが情報ありませんか?
|
Form や Control に関しては、(見かけ上)すべての参照が失われたからと言って、すぐにGCの対象になったりはしません。
当然、それなりの理由があってそういう設計になっています。
その辺について、囚人さんがブログで考察しています。
誰も参照していないフォームは、何故 GC の対象にならないのか(その2)
http://blogs.wankuma.com/shuujin/archive/2006/04/10/22318.aspx
|
- 囚人
- ぬし
- 会議室デビュー日: 2005/08/13
- 投稿数: 1019
|
投稿日時: 2007-02-11 17:19
Jitta さんも渋木さんも、そして、じゃんぬねっとさんもよく私の Blog を引き合いに出してくれますが、皆さん記憶力良過ぎです。人の Blog の記事を良く覚えてますねぇ。羨ましい記憶力です。
閑話休題。
Blog に書いてある事が正です。見かけ上の参照が消えても GC に掃除されては困るものがあるわけですね。また、子ウィンドウに関しては、親が差し替えられた場合も考慮して設計されているようです。
引用: |
|
Form1を消したら何個も作ってたForm2がいっせいに消えるから、親フォームからの参照が残っているはずだと思い投稿したのだが…。
|
これは単にアプリケーションが終了しただけですけどね。
_________________ 囚人のジレンマな日々
|
- ぐるうぶ
- 会議室デビュー日: 2006/01/31
- 投稿数: 5
|
投稿日時: 2007-02-11 23:02
.NET2.0ならApplication.OpenFormsで参照できますね。
|
- よっこらしょ
- 常連さん
- 会議室デビュー日: 2006/11/18
- 投稿数: 24
|
投稿日時: 2007-02-12 04:41
引用: |
|
これは単にアプリケーションが終了しただけですけどね。
|
そうだったのですか。
終了タイミングを変更することで確認しました。
引用: |
|
.NET2.0ならApplication.OpenFormsで参照できますね。
|
これは複数開いたとしても、例えば最初に作ったフォームを操作できると言うことですか?
なら今までの話は一体なんだったのか…。
これってどうやって使うのでしょうか?
|
- よっこらしょ
- 常連さん
- 会議室デビュー日: 2006/11/18
- 投稿数: 24
|
投稿日時: 2007-02-19 01:46
OpenFormsで操作出来る事を確認しました。
最初にこのレスが欲しかったものです。
出来ませんと言い切った人達は出来ないと思い込んでたのでしょうね。
私ともども勉強になったことでしょう。
|
- どせい
- 大ベテラン
- 会議室デビュー日: 2006/10/25
- 投稿数: 145
|
投稿日時: 2007-02-19 01:56
引用: |
|
よっこらしょさんの書き込み (2007-02-19 01:46) より:
OpenFormsで操作出来る事を確認しました。
最初にこのレスが欲しかったものです。
出来ませんと言い切った人達は出来ないと思い込んでたのでしょうね。
私ともども勉強になったことでしょう。
|
わざわざ実験とその報告ありがとう。
ところで、どの辺に「出来ません」と言い切った人がいるのだろう。
スレ全体検索しても見当たらないなあ。どれを指して言ってるの?
今回の収穫は2点。
.net2.0で出来る事が増えているらしいという情報を知ったこと。
もう一点は、言わなくてもいいか。スレ主以外で察してくれる人もいるだろうし。
以上。
[ メッセージ編集済み 編集者: どせい 編集日時 2007-02-19 02:05 ]
|