- - PR -
コネクションのコピー
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-21 10:01
VB.NETでADOからADO.NETの書き換えを行っています。
(Framework1.1) 書籍やHPで参考になるサンプルソースを探しているのですが、 あるHPでコネクションをCTYPEでキャストして、 cloneメソッドでコピーをしている箇所を見つけました。 自分でも調べたのですが、よくわかりませんでした。 そこでお聞きしたいのですが、 ○どういう場合にコネクションのコピーが必要か? もしかして、トランザクションのコピーも可能か? ○コピーしたコネクションは、コピー元のコネクションを 開放したら、コピー先のコネクションの必要ないか? そのソースでは、コピー元しか開放していませんでした。 勉強のために質問させて頂きました。 よろしくお願いします | ||||||||
|
投稿日時: 2006-06-21 10:21
「値型と参照型」について調べてみるとよいと思います。 それぞれのコピー(代入)における動きがポイントです。 | ||||||||
|
投稿日時: 2006-06-21 10:27
Clone() を呼び出した結果、内部的に何が起こるかは各クラスの実装によって異なるため、そこから一般論は引き出すことは出来ません。 どういう意図があるのかは、Clone() したのがどんな型か分からないし、どんな場面でその操作を行ったのかもわからないので不明です。 好意的に想像を膨らませると、コピー元のコネクションと同じ接続文字列を使って、もうひとつ別のDB接続を張りたかったとか?
これもそのクラスの実装次第です。 | ||||||||
|
投稿日時: 2006-06-21 10:40
あ、コネクションを含むクラスのクローンという頭で答えてしまいました。 その場合は、既定では単なるポインタの複製でいいんですよね? | ||||||||
|
投稿日時: 2006-06-21 11:15
どの Connection かわかりませんが、おそらく参照を示す値の複製でしょうね。 まあ、試せば、ShallowCopy か DeepCopy かはわかりますが... # でも、フツーは絶対しない。(;^-^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-06-21 12:26
か、どうかは実装次第です ![]() コネクションを含むクラスの Clone() メソッドで、単純にメンバを右から左に代入するコードを書けば参照の複製でしょうし、何も書かなければ初期値のままです。 C++ の「代入」と違って、Clone() のオーバーライドは単なるメソッドのオーバーライドですから、「何が起きるか」は「どんなコードを書いたか」に依存します。 | ||||||||
|
投稿日時: 2006-06-21 13:15
あ、「既定」は何も書かなければのつもりでした。。。 何度もすいませんです。 ![]() | ||||||||
|
投稿日時: 2006-06-21 19:23
こういう場合、一番良いのは、その HP の作者に直接聞くことです。 作者が連絡先を公開していない場合は、聞くとき(つまりここに書き込むとき)に、そのページへのリンクを張ります。 作った意図は、作った本人にしか分かりません。渋木宏明(ひどり)さんが「好意的に想像を膨らませると」という言葉を使われていることに注意してください。 ところで、自分が何か情報を公開していると、想像してください。そして、自分への問い合わせ先も公開しています。 ところが、誰かが、他のところで、「これって正しいのでしょうか」と、尋ねているところに出くわしたら、どんな気持ちがすると思いますか? |
1