- - PR -
[vb2005] これってポインタを渡してるのでしょうか?
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-12-07 17:47
お世話になっております。
WindowsXP, Visual Studio 2005 で開発しております。
上記のようなコーディングは(きっと)よくやることだと思いますが、 (メモリ?)内部では実際にはどのような動作をしているのでしょうか? データをコピーしているのか、それともC言語系のようなポインタがやり取りされてるのでしょうか? たとえば以下のような(前述のコードのナンバーと対応)
ことやると、実際のテーブル("hoge")のセルの値が置き換わったり、テーブルに行が追加されますよね。 とすると、これは変数を宣言した時点でデータをコピーしたわけではないのかな、 と考えるにいたったのですが、これは正しい理解でしょうか? では、なにやってるのかな、ポインタ渡してるのかな?と思った次第です。 で、触れていない上記の "3." についてなんですが、 先日質問させていただいた、【件名:[vb.net]TextBox + Combobox で DataGridViewComboBoxColumn.DataPropertyName と同様な機能を実装したい】で、 まだ不具合がありまして、 TextBox から ValueMember のデータ型と異なった値(byte型に負数とか)を入力されると Exception になってしまうのです。 で、これを回避するために、
こういうロジックを考えたんですが、 「イベントの度にテーブルコピーされちゃたまらんよなぁ でも実際、中身をコピーしているんだろうか?」 と思ったのがきっかけです。 アイテム数が10件そこそこのデータで試しても、たいして処理速度がかわったようには感じないのですが・・・ (これからデータ増やしてやってみます) くだらないことを長々と説明して解りづらいかも知れませんが、 よろしくおねがいします。 [ メッセージ編集済み 編集者: とある根性なし 編集日時 2007-12-07 17:52 ] | ||||||||||||
|
投稿日時: 2007-12-07 18:08
Classは参照渡し、Structureは値渡しになります。
| ||||||||||||
|
投稿日時: 2007-12-07 18:21
ご返信ありがとうございます。
やや、一言で終わってしまいましたね ヒントいただきましたので、しっかり勉強させていただきます。 ありがとうございました | ||||||||||||
|
投稿日時: 2007-12-07 18:29
これですね〜
Visual Basic 言語の概念 【値型と参照型】 http://msdn2.microsoft.com/ja-jp/library/t63sy5hs(VS.80).aspx なるほど〜 | ||||||||||||
|
投稿日時: 2007-12-08 18:45
しっかり勉強されるとのことなので、これも。
Visual Basic 言語の概念 【引数の値渡しと参照渡しの違い】 http://msdn2.microsoft.com/ja-jp/library/eek064h4(VS.80).aspx 『値型と参照型』と『値渡しと参照渡し』はきっちり区別して理解することをお勧めします。 『何を』『どう』渡しているかを理解しておいたほうがいいですよ。 この例だと、参照型を値渡し(というか値を代入)してます。 | ||||||||||||
|
投稿日時: 2007-12-10 11:03
参照型と参照渡し、値型と値渡しは違うので混同してしまうとまずいような... Class は参照型なので別の変数に代入すると参照がコピーされます。 参照先は同じなので同じものを示すことになります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-12-10 11:17
確かに。。。 参照型、値型(Class、Structure) 参照渡し、値渡し(ByRef、ByVal) はそれぞれ異なる概念ですね。失礼しましたm(__)m | ||||||||||||
|
投稿日時: 2007-12-10 14:09
みなさまありがとうございます。
言葉って大事ですね。 うろ覚えで物言うので、いつも上司に怒られています みなさんのアドバイスを元に勉強させていただきます。 ありがとうございました。 |
1