• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:別々の変数なのに同じ内容がセットされてしまう)

変数Aと変数Bの値が同じになる現象の原因とは?

このQ&Aのポイント
  • 現在、vb.net2010を使用して、あるアプリケーションの改造を行っておりますが、別々の変数にもかかわらず、一方の変数に値をセットするともう一方の変数にも値がセットされるという現象が発生しています。
  • 変数Aと変数Bは別の変数なのに、どうして変数B配下の変数に値がセットされると、変数Aに反映されてしまうのかがわかりません。
  • 変数名は違うけれど、アドレスが同じところを見ているので、こういう現象になるのでは?という指摘がありました。

質問者が選んだベストアンサー

  • ベストアンサー
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

こんにちは >別の人に聞いてみたのですが、変数名は違うけれど、 >アドレスが同じところを見ているので、こういう現象になるのでは? >という指摘がありました。 こちらの話が正しいような気がします。 参照型について調べてみてはどうでしょうか? http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

私は素人ですが、下記が的外れなら笑って無視してください。 VBのコーディング上で、変数Aが変わるステップ(代入が顔を出すケースは)は、(コーディンウ)形の上で ・「A=」・・・のような書き方をしている場合ー代表的な代入による値変更 ・有名なByValとByRefについての話題 ・A as・・のあとに離れて「=・・」がある代入の場合 変数型定義のあとに代入している 例 A as Integer=2 ・その他 Visual BASICの関数にMid(A、1,1)=2というような左辺での変数を変える関数があった。 Sub test01() a = "3" MsgBox a Mid(a, 1, 1) = "2" MsgBox a End Sub VB.NETにも、 「ちなみにVBなら.NETでも Mid(BeforeStr, 3, 1) = "2" の記述が可能です。これはBeforeStr自体を書き換えます。」 ・このほかにむつかしいケースがあるのでしょうか。 ーーー コーディング上の「検索」を使って、予想外で、Aの値を変えているコーディング箇所は見つけられないでしょうか?それの適否をチェックして行く。 ーー 上記の机上の目視的な方法で無理なら、その後にはVB.NETの 「変数と式を監視する」機能で、Aの動きを監視するとか。

PRI_YE
質問者

お礼

ありがとうございます。 返信遅くなりまして、申し訳ございませんでした。 あれから 色々調べてみましたが、 どうやら、 >・有名なByValとByRefについての話題 に関わるところのようです。 >Mid(BeforeStr, 3, 1) = "2" これは意外でした。 こういう使い方が出来ると言うことを知るのと同時に、 気をつけなければならないところだと思いました。 ありがとうございました。

関連するQ&A